Perancangan Perangkat Lunak Sistem

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