3.7 Perancangan Perangkat Lunak Sistem
Rancangan perangkat lunak sistem program adalah susunan urutan perintah yang sistematis untuk menjalankan atau mengendalikan sistem. Pada perancangan ini perangkat
lunak dirancang dengan menggunakan bahasa pemograman asembly ASM-51. Program disusun dengan kode-kode perintah sesuai dengan kode yang disediakan oleh
asembly ASM-51, setelah selesai penurunan program, kemudian program di compile menjadi kode mesin agar dapat diunduh dengan rangkaian mikrokontroler sehingga dapat menjalankan
sistem. Berikut adalah rancangan program dari sistem yang digunakan:
Buzzer Bit
P2.0 Reset
Bit P2.0
Sensor Bit
P1.0 Led
Bit P3.0
ACAAL Delay_1s
Clr Buzzer
TS1: JB
Sensor, ACAAL
Delay_1s Mov
R0, 5 TS2:
JB Sensor, TS1
Clr Led
ACAAL Delay_500ms
SetB Led
ACAAL delay_500ms
Djnz R0, TS2
Loop: Clr
Led ACAAL
Delay_1s
Universitas Sumatera Utara
SetB Led
ACAAL Delay_1s
JNB Sensor, Loop
SetB Buzzer
Mov R0, 60
TS3: Clr
Led ACAAL
Delay_500ms Setb
Led ACAAL
Delay_500ms JB
Reset, TS4 Clr
Buzzer Ajmp
TS1 TS4:
Djnz R0, TS3
Clr Buzzer
Ajmp TS1
Delay_1s: Mov R4, 200
Tunggu_1detik: Acaal Delay_5ms
Djnz R4, Tunggu_1detik Ret
Delay_500ms Mov R4, 100
Tunggu_500mdetik: Acaal Delay_5ms
Djnz R4, Tunggu_500detik
Universitas Sumatera Utara
Ret Delay_5ms:
Mov TMOD, 21H Mov TH0, 0EDH
Mov TL0, 0FFH Setb TR0
Tunggu_5ms: Jbc TF0, sudah_5ms
Ajmp Tunggu_5ms Sudah_5ms:
Clr TR0 Ret
End Penjelasan-penjelasan dari perintah diatas sebagai berikut:
1. Buzzer Bit
P2.0 Reset
Bit P2.0
Sensor Bit
P1.0 Led
Bit P3.0
Perintah diatas adalah perintah untuk memberi nama pada beberapa port yang digunakan dengan tujuan agar memudahkan penulisan program selanjutnya.
2. ACAAL Delay_1s
Clr Buzzer
Perintah diatas adalah perintah untuk menunda waktu selama 1 detik dan mematikan buzzer dengan memmberi logika 0 pada port buzzer P0.0
3. TS1: JB
Sensor, JB
Sensor, TS1
Universitas Sumatera Utara
Perintah diatas adalah perintah untuk mendeteksi sensor inframerah. Jika kondisi sensor yaitu port P1.0 berlogika 1 sistem akan berhenti dan menunggu hingga port tersebut
berlogika 0. 4. Mov R0, 5
Perintah diatas adalah perintah untuk mengisi register 0 dengan 5. 5. Clr
Led ACAAL Delay_500ms
SetB Led ACAAL Delay_500ms
Djnz R0, TS2 Perintah diatas adalah perintah untuk menghidup matikan lampu indikator selama 5
kali. 6. Loop: Clr
Led ACAAL Delay_1s
SetB Led ACAAL Delay_1s
Perintah diatas adalah perintah untuk melakukan detteksi sensor ddengan menjalankan lampu indikatoor hidup dan mati.
7. JNB Sensor, Loop Perintah diatas adalah perintah untuk membaca sensor yaitu port P1.0, jika port
tersebut berlogika 0 memberi arti tidak terjadi ayunan pada bbandul atau sensor sehingga sensor berlogika 1 berarti telah terjadi perubahan logika pada ssensor yang memberi arti
kemungkinnan terjadinya gempa, karena ayunan bandul. Dengan demikian sistem akan mengaktifkan alarm.
8. SetB Buzzer
Universitas Sumatera Utara
Perintah diatas adalah perintah yang akan mengaktifkan atau membunyikan buzzer yaitu dengan memberi logika 1 pada port P0.0.
9. Mov R0, 60
TS3: Clr Led
ACAAL Delay_500ms
Setb Led
ACAAL Delay_500ms
JB Reset, TS4
Clr Buzzer
Ajmp TS1
TS4: Djnz R0, TS3
Clr Buzzer
Ajmp TS1
Perintah diatas adalah perintah untuk menghitung waktu pengaktifan buzzer yaitu selama 1 menit disertai pengaktifan lampu indikator, setelah 1 menit sistem akan mematikan
alarm atau buzzer dan kembali ke awal. 10. Delay_1s:
Mov R4, 200 Tunggu_1detik:
Acaal Delay_5ms Djnz R4, Tunggu_1detik
Ret Perintah diatas adalah perintah untuk menunda waktu selama 1 detik dengan
melakukan loop 2x200 ms. 11. Delay_500ms
Mov R4, 100
Universitas Sumatera Utara
Tunggu_500mdetik: Acaal Delay_5ms
Djnz R4, Tunggu_500detik Ret
Perintah diatas adalah perintah menunda waktu selama 500 mdetik dengan penundaaan loop 100x5 ms.
12. Delay_5ms: Mov TM0D, 21H
Mov TH0, 0EDH Mov TL0, 0FFH
Setb TR0 Tunggu_5ms:
Jbc TF0, sudah_5ms Ajmp Tunggu_5ms
Sudah_5ms: Clr TR0
Ret End
Perintah diatas adalah perintah untuk menunda waktu selama 5 mdetik dengan menjalankan timer 0.
Perancanag perangkat lunak rutin pada LCD yaitu: PosisiAwalLCD:
Mov A,02H Lcall Kirim_Perintah
Acall Delay_LCD Ret
Universitas Sumatera Utara
PerintahLCD: Lcall Kirim_Perintah
Acall Delay_LCD Ret
ClearLCD: Mov A,01H
Lcall Kirim_Perintah Acall Delay_LCD
Ret
Delay_LCD: Push B
Mov B,06H Delay_LCD_Loop:
Push B Acall Delay_LCD2
Pop B
Djnz B,Delay_LCD_Loop Pop
B Ret
Delay_LCD2: Mov B,0FFH
TungguDelay:
Universitas Sumatera Utara
Djnz B,TungguDelay Ret
Init_Serial: MOV SCON,52H ;
MOV TMOD,20H ; MOV TH1,0FdH ;
MOV TCON,040H ; MOV PCON,00H ;
RET Serial_In:
Clr RI
TungguTerima: Jnb
RI,TungguTerima Mov A,SBUF
Ret Init_LCD:
Setb RS Clr EClock
Lcall Delay_5mS ;Tunda 20 mS
Lcall Delay_5mS ;
Lcall Delay_5mS ;
Lcall Delay_5mS ;
Mov A,30H ;Kirim 30H
Acall Kirim_Perintah ; Lcall Delay_5mS
;Tunda 5mS Mov A,30H
;Kirim 30H
Universitas Sumatera Utara
Acall Kirim_Perintah ; Push B
;Tunda 100uS lebih Mov B,100
; Djnz B,
; Pop B
;
Mov A,30H ;
Acall Kirim_Perintah ;
Mov A,20H ;Send Init
Acall Kirim_Perintah ;
Mov A,28H ;8x5 2lines
Acall Kirim_Perintah ;
Mov A,08H ;Display OFF
Acall Kirim_Perintah ;
Mov A,01H ;Display Clear
Acall Kirim_Perintah ;
Mov A,0EH ;Display ON
Acall Kirim_Perintah ;
Mov A,06H ;Mode Increment Address
Acall Kirim_Perintah ;
Universitas Sumatera Utara
Ret Kirim_Perintah:
Clr RS Clr RW
Acall Kirim_DataLCD ;4 bit sebanyak 2 x Swap A
Acall Kirim_DataLCD ; Acall PeriksaBusy
Ret ;
Kirim_DataLCD: Setb EClock
Mov P1,A ;Kirim ke Port 0
Clr EClock ret
Kirim_Karakter: Clr RW
Setb RS Acall Kirim_DataLCD ;ke LCD 2x
Swap A Acall Kirim_DataLCD ;
Acall PeriksaBusy Ret
BacaRegister: Mov P1,0FFH ;Jadikan P0 sebagai input
Setb RW ;LCD mode Read Clr RS ;RS = 0
Universitas Sumatera Utara
Setb EClock ; Mov A,P1
Anl A,0F0H Clr EClock
Push ACC Setb EClock
Mov A,P1 Anl A,0F0H
Clr EClock Swap A
Pop B Add A,B
Clr RW Ret
PeriksaBusy: Acall BacaRegister
Jb ACC.7,PeriksaBusy Ret
;---------------------- ;LCD pindah baris 2
Baris2_LCD: Mov A,BarisDua
Acall Kirim_Perintah Ret
;----------------------
Universitas Sumatera Utara
;LCD pindah baris 1 Baris1_LCD:
Mov A,HomeLCD Acall Kirim_Perintah
Ret ;----------------------
;Geser Display ke kanan GeserDisplay_Kanan:
Mov A,RDisplay Acall Kirim_Perintah
Ret ;----------------------
;Geser Display ke kiri GeserDisplay_Kiri:
Mov A,LDisplay Acall Kirim_Perintah
Ret RCursor EQU 14H
LCursor EQU 10H RDisplay EQU 1FH
LDisplay EQU 18H HomeLCD EQU 02H
BarisDua EQU 0C0H RS Bit P3.5
RW Bit P3.6 EClock Bit P3.7
Universitas Sumatera Utara
KirimPesan_LCD: LoopKirimPesan_LCD:
Mov A,00H ;Ambil data dari memori yg ditunjuk
Movc A,A+Dptr ;
Cjne A,0FH,Kirim_LCD ;Kirim ke LCD selama belum ditemukan
Ret ;0FH
Kirim_LCD: Acall Kirim_Karakter
Inc Dptr
;Tunjuk ke memori selanjutnya Ajmp LoopKirimPesan_LCD
Universitas Sumatera Utara
3.8 Diagram Alir Program Flowchart