- Register Flag untuk alarm - Register 2 dan 3 untuk function delay alarm
- Register 5 dan 6 untuk function delay umum
3.3.2 Langkah-langkah Pemograman
Agar memudahkan dalam penulisan program maka digunakanlah instruksi “bit” untuk merubah alamat 1-bit dan “Equ” untuk 8-bit dalam bentuk kata, seperti :
MemDtmf Equ 30h
; penulis menggunakan alamat memori 30h DetHook bit
P0.2 ; aktif low
SenLDR bit
P0.1 ; apabila terkena cahaya : high SenHalang bit P0.0 ; apabia terhalang : High
STD bit P0.3 ; apabila di tekan : high
FAlarm bit
F0 Pintu1
bit P2.0 ; aktif high
Pintu2 bit
P2.1 ; aktif high Beban1 bit
P1.0 Beban2 bit
P1.1 Beban3 bit
P1.2 Beban4 bit
P1.3 Beban5 bit
P1.4 Beban6 bit
P1.5 Beban7 bit
P1.6 Beban8 bit
P1.7 Alarms
bit P3.0
Led bit
P3.1
Universitas Sumatera Utara
3.3.3 Pemograman sistem
Berikut ini adalah program-program yang terdapat pada Mikrokontroler AT89S52
sebagai instrumen pengendali, diantaranya :
Program inisialisasi
yang berfungsi sebagai pengaturan awal untuk mengaplikasikan program yang telah dibuat. Berikut adalah program inisialisasi.
Init:
mov R2,0 ; R2 sebagai counter timer mulai dari 0
mov R3,0 ; R3 sebagai counter timer mulai dari 0
Mov P0,0ffh ; Diisi 0ff agar terbaca sebagai input
Mov P2,0ffh ; Diisi 0ff agar terbaca oleh sebagai input
clr FAlarm ; Matikan Alarm
acall delay ; Tunda dulu sesaat
acall delay acall
delay acall
delay clr
led ; matikan LED indikator
Program Delay Alarm
Program ini dibuat agar bunyi alarm menggunakan interval waktu. Di bawah ini
adalah programnya. AlarmRun:
inc R2 ; counter timer R2 ditambah dgn 1
Cjne R2,0FEh,tnd_end ; cek apakah R2 sudah 0FEh? jika belum lompat ke
tnd_end
Universitas Sumatera Utara
Inc R3 ; Counter timer R3 ditambah dengan 1
mov R2,0 ; counter R2 diberi nilai 0
cjne R3,50h,tnd_end ; Cek apakah counter R3 sudah 50h ? jika belum
lompat ke tnd_end mov R2,0
; jika sudah kosongkan isi counter R2 mov R3,0
; Juga kosongkan isi counter R3 cpl Alarms
; Balikkan kondisi Alarms cpl led
; Balikkan logika LED
tnd_end:
ret
Program Delay Umum Delay:
Mov R5,0ffh ; R5 sebagai counter yang dimulai dari 0FFh
dly1: Mov R6,0ffh ; R6 sebagai counter yang dimulai dari 0FFh
dly2: djnz R6,dly2
djnz R5,dly1
ret
Program Kedip LED
setb Led ; LED diberi logika 1 hidup
acall
delay
; panggil program function delay
acall delay
clr led ; matikan
LED
acall delay
acall delay
ret
Universitas Sumatera Utara
Program Deteksi Hook
Berikut ini adalah programnya :
Jb DetHook,BacaSensor
Pada program diatas tampak instruksi JBDetHook, Baca Sensor. Fungsinya untuk mendeteksi DetHook P0.2 dalam keadaan high atau low, jika high berarti handset telephone
sedang di angkat sehingga intruksi di lanjutkan ke baris program selanjutnya tetapi jika high maka hal ini menandakan bahwa handset telepon tidak sedang diangkat sehingga intruksi
program akan melompat ke label BacaSensor.
Program Tone Dekoder
Rangkaian tone decoder menghasilkan 5 bit data yang akan dimasukkan kerangakaian mikrokontroler. 5 bit tersebut atau keluaran dari IC MT 8870 dihubungkan ke jalur B. Di
bawah adalah programnya :
DetStd: Jnb STD,BacaSensor ; Cek Tombol di Tekan atau tidak, jika tidak
lompat ke BacaSensor
Lepas: Jb STD,Lepas ; Cek Tombol di udah di Lepas atau belum. Jika
belumhigh maka akan menunggu sampai dilepas low
Mov Acc,P0 ; pindahkan data dari P0 ke Acc
mov b,10h ; Register b sebagai bilangan yang dibagi
Anl Acc,0F0h ; Ambil data MSB XXXX 0000
div ab ; Ubah jadi Satuan 0000 XXXX
TblBintang: Cjne A,11,TblPagar
; lihat data tombol yang kedua
acall blink ; jika ditekan maka Hidupkan LED
Universitas Sumatera Utara
mov A,MemDTMF ; Ambil data tombol sebelumnya
Acall BebanOn ; Panggil function BebanOn
mov MemDTMF,0 ; Kosongkan Isi memory data tombol
Sjmp BacaSensor
; Jump ke Baca sensor
TblPagar: Cjne A,12,SimpanTbl
; lihat data tombol yang kedua ditekan
acall blink ; Hidupkan
LED Mov A,MemDTMF
; Ambil data tombol sebelumnya
Acall BebanOff
; Panggil Function BebanOff mov MemDTMF,0
; Kosongkan isi memory data tombol
Sjmp BacaSensor SimpanTbl:
Mov MemDTMF,Acc ; jika yg di tekan bukan tombol dan
maka data tombol Simpan ke memory pada program diatas tampak instruksi JNB STD ini berfungsi mengecek tombol
ditekan atau tidak. Jika tidak ditekan maka kondisi input logikanya adalah 0 dan akan lompat ke instruksi program baca sensor dan jika high maka akan dicek lagi apakah tombol sudah
dilepas atau belum, Jika belum maka mikrokontroler akan menunggu sampai tombol dilepas dan jika sudah dilepas maka ambil data dari p0 dan simpan ke Acc. Kemudian isi data
register B dengan nilai 10h, setelah itu data yang ada di Acc di AND kan dengan 0F0h xxxx 0000 untuk mengambil nilai MSB dan menghasilkan nilai puluhan, kemudian dibagikan
dengan register B agar didapat data sesuai dengan tombol mana yang ditekan. Jika yang ditekan bukan tanda ataupun maka data tombol akan disimpan dimemory. Kemudian
akan mendeteksi kembali untuk tombol dan . Seperti langkah diatas akan membandingkan apakah tombol yang ditekan itu atau , jika ada tombol diantara keduanya maka data yang
Universitas Sumatera Utara
disimpan di MemDtmf akan dipindahkan ke Acc dan akan memanggil program beban on atau beban off dimana nomor beban terlebih dahulu sudah disimpan di Acc pada program simpan
tombol.
Program Deteksi Sensor
Berikut adalah program untuk sensor-sensor yang digunakan
SPintu1: Jnb Pintu1, SPintu2
; mendeteksi kondisi pintu 1 setb Alarms
; Jika sensor aktif maka Hidupkan alarm setb FAlarm
; Beri kode aktifkan alarm
SPintu2: Jnb Pintu2, SLDR
; mendeteksi kondisi pintu 2 setb Alarms
setb FAlarm
SLDR: Jnb SenLDR,SHalang
; mendeteksi kondisi sensor LDR setb Alarms
setb FAlarm
Shalang Jnb SenHalang,AlarmAktif
; mendeteksi kondisi sensor halang setb Alarms
setb FAlarm
AlarmAktif: Jnb FAlarm, SensorEnd ; jika alarm tidak aktif lompat ke SensorEnd
acall AlarmRun
; aktifkan AlarmRun
SensorEnd: sjmp Start
; kembali ke awal
Program Pengontrolan Beban Relay
Pengontrolan pada beban dilakukan dengan membuat sebuah fungsi yang nantinya dapat langsung menghidupkan atau mematikan beban melalui rangkaian relay, untuk
Universitas Sumatera Utara
pengontrolan ini program harus dapat mengirimkan logika low dan high kerangkaian relay, ketika rangkaian driver relay menerima logika high maka beban akan aktif dan sebaliknya.
Dalam hal ini sistem menggunakan 8 buah relay maka khusus untuk rangkaian relay ini digunakan satu buah port untuk uotputnya yaitu p1. dibawah ini adalah program untuk
mengotrol relay yang nomor beban telah disimpan di Acc pada program simpan tombol.
Program menghidupkan beban On BebanOn:
on1: cjne A,1,on2
; Jika ditekan tombol 1? jika tidak maka lompat ke on2 setb Beban1
; hidupkan beban 1
sjmp on2End on2: cjne A,2,on3
; Jika ditekan tombol 2 ? jika tidak maka lompat ke on3 setb Beban2
; hidupkan beban 2
sjmp on2End on3: cjne A,3,on4
setb Beban3
sjmp on2End on4: cjne A,4,on5
setb Beban4
sjmp on2End on5: cjne A,5,on6
setb Beban5
sjmp on2End on6: cjne A,6,on7
setb Beban6
Universitas Sumatera Utara
sjmp on2End on7: cjne A,7,on8
setb Beban7
sjmp on2End on8: cjne A,8,on9
setb Beban8
sjmp on2End on9: cjne A,9,on0
setb FAlarm ; Hidupkan alarm
setb Alarms
sjmp on2End on0: Cjne A,0Ah,on2End
Mov P1,0FFh ; hidupkan semua beban
sjmp on2End on2End:
acall delay
ret
Program mematikan beban Beban Off
off1: cjne A,1,off2 ; Jika ditekan tombol 1 ? jika tidak maka lompat ke off2
clr Beban1 ; matikan beban 1
sjmp off2End off2: cjne A,2,off3
clr Beban2
sjmp off2End
Universitas Sumatera Utara
off3: cjne A,3,off4
clr Beban3
sjmp off2End off4: cjne A,4,off5
clr Beban4
sjmp off2End off5: cjne A,5,off6
clr Beban5
sjmp off2End off6: cjne A,6,off7
clr Beban6
sjmp off2End off7: cjne A,7,off8
clr Beban7
sjmp off2End off8: cjne A,8,off9
clr Beban8
sjmp off2End off9: cjne A,9,off0
Clr FAlarm ; matikan alarm
Clr Alarms
sjmp off2End off0: Cjne A,0Ah,off2End
Mov P1,0 ; matikan semua beban
sjmp off2End
Universitas Sumatera Utara
off2End: acall delay ;
panggil function delay ret
Blink:
setb Led ;
hidupkan Led
acall delay ; panggil program delay
acall delay
clr led
; matikan
led acall
delay acall
delay ret
end
Universitas Sumatera Utara
BAB IV PENGUJIAN DAN ANALISA SISTEM
4.1 Pengujian Software
4.1.1 Pengujian Program Sistem Minimum Mikrokontroler
Pengujian rangkaian minimum mikrokontroler ini dilakukan sebelum menghubungkan blok-blok rangkaian lainnya untuk mengetahui apakah rangkaian
mikrokontroler ini bagus dengan menggunakan LED dan alarm sebagai indikator.
alarm LED
P3,0 P3,1
AT89S52
Gbr 4.1 blok diagram pengujan sistem minimum mikrokontroler Adapun program pengujiannya sebagai berikut :
Start :
mov P1,0 ; port 1 diisi dengan 0
clr led ; matikan LED
setb Alarms
; alarm diberikan logik 1 aktif acall
delay ; tunda sesaat
setb led ; hidupkan LED
clr Alarms
; alarm off acall
delay clr led
setb Alarms
acall delay
Universitas Sumatera Utara