Implementasi Perangkat Keras Implementasi Program
5. Menerima serial UART dari HP
Serial CLR
ri PUSH
a PUSH
psw PUSH
MOV r0,SrBuff_M
MOV a,SrCtr_M
ADD a,r0
MOV r0,a
MOV r0,sbuf
INC SrCtr_M
MOV a,SrCtr_M
CJNE a,SrCtrMax_C+1,SrJ1
MOV SrCtr_M,SrCtrMax_C
SETB TooLong_F
SrJ1 MOV
SrTOTick_M,0 SETB
SrTO_F POP
POP psw
POP a
RETI
6. Menuliskan intruksi pada LCD menggunakan interface 4 bit
LCD_Write_Inst PUSH
psw CLR
LCDRS_P SETB
LCDCS_P MOV
c,a.4 MOV
LCDData4_P,c MOV
c,a.5 MOV
LCDData5_P,c MOV
c,a.6 MOV
LCDData6_P,c MOV
c,a.7 MOV
LCDData7_P,c CLR
LCDCS_P LCALL
LCD_Delay_Inst
SETB LCDCS_P
MOV c,a.0
MOV LCDData4_P,c
MOV c,a.1
MOV LCDData5_P,c MOV c,a.2
MOV LCDData6_P,c MOV
c,a.3 MOV
LCDData7_P,c CLR
LCDCS_P LCALL
LCD_Delay_Inst POP
psw RET
7. Menuliskan data pada LCD menggunakan interface 4 bit
LCD_Write_Data PUSH
psw SETB
LCDRS_P SETB
LCDCS_P MOV
c,a.4 MOV
LCDData4_P,c MOV
c,a.5 MOV
LCDData5_P,c MOV
c,a.6 MOV
LCDData6_P,c MOV
c,a.7 MOV
LCDData7_P,c CLR
LCDCS_P LCALL LCD_Delay_Data
SETB LCDCS_P
MOV c,a.0
MOV LCDData4_P,c
MOV c,a.1
MOV LCDData5_P,c
MOV c,a.2
MOV LCDData6_P,c
MOV c,a.3
MOV LCDData7_P,c
CLR LCDCS_P
LCALL LCD_Delay_Data POP
psw RET
8. Melakukan inisialisasi LCD dengan interface 4 bit
Init_LCD CLR
LCDData4_P SETB
LCDData5_P CLR
LCDData6_P CLR LCDData7_P
CLR LCDRS_P
CLR LCDCS_P LCALL LCD_Delay_Inst
MOV a,28h
LCALL LCD_Write_Inst LCALL LCD_Delay_Inst
LCALL LCD_Delay_Inst MOV
a,1 LCALL LCD_Write_Inst
MOV a,2
LCALL LCD_Write_Inst MOV
a,6 LCALL LCD_Write_Inst
MOV a,0Ch
LCALL LCD_Write_Inst RET
9. Melakukan delay setelah pengiriman data ke LCD
LCD_Delay_Data PUSH
7 MOV
r7,50 DJNZ
r7, POP
7 RET
10. Melakukan delay setelah pengiriman intruksi ke LCD
LCD_Delay_Inst PUSH
7 PUSH
6 MOV
r6,10 D2_J1
MOV r7,100
DJNZ r7,
DJNZ r6,D2_J1
Pop 6
Pop 7 RET
11. Menampilkan text pada LCD dari posisi kursor terakhir
Write_Text PUSH
a WT_J1
CLR a
MOVC a,a+dptr
JNZ WT_J2
SJMP WT_J3
WT_J2 LCALL
LCD_Write_Data INC
dptr SJMP
WT_J1 WT_J3
POP a
RET
12. Menghapus seluruh tampilan pada LCD
Clr_Screen PUSH
a MOV
a,1 ACALL
LCD_Write_Inst POP
a RET
13. Mengecek serial buffer apakah sama dengan SIM command
Check_SIM_Cmd MOV
r0,SrBuff_M Check_SIM_Cmd_r0
MOV r7,SrCtr_M
CLR f0
CSIMCmdJ4 PUSH
dph PUSH
dpl PUSH
CSIMCmdJ1 MOV
b,r0 CLR
a MOVC
a,a+dptr JNZ
CSIMCmdJ2
SETB f0
POP a
POP dpl
POP dph
RET CSIMCmdJ2
CJNE a,b,CSIMCmdJ3
INC dptr
INC r0
SJMP CSIMCmdJ1
CSIMCmdJ3 POP
POP dpl
POP dph
INC r0
DJNZ r7,CSIMCmdJ4
RET
14. Menganalisis status HP
Init_HP MOV
dptr,INitHP_T LCALL
Write_Text MOV
a,0C0h LCALL
LCD_Write_Inst MOV
dptr,Wait_T LCALL
Write_Text CLR
LED_P MOV
dptr,SetEchoOff_T ACALL
Send_text_TX MOV
dptr,EchoOff_C ACALL
Send_Text_SIM JNB
SrValid_F, CLR
SrValid_F ACALL
Send_Buffer MOV
SrCtr_M,0 CPL
LED_P MOV
dptr,SetSMSMode_T ACALL
Send_Text_TX MOV dptr,SMSMode_C ; set command syntax GSM
3.4x + phase 2+ ACALL
Send_Text_SIM
JNB SrValid_F, CLR SrValid_F
ACALL Send_Buffer MOV SrCtr_M,0
CPL LED_P MOV dptr,SetSMSFormat_T
ACALL Send_Text_TX MOV
dptr,SMSFormat_C ; set SMS format = PDU
mode ACALL Send_Text_SIM
JNB SrValid_F, CLR SrValid_F
ACALL Send_Buffer MOV SrCtr_M,0
CPL LED_P MOV dptr,SetSMSAlert_T
ACALL Send_Text_TX MOV
dptr,SMSAlert_C ;set SMS alert = PDU mode
ACALL Send_Text_SIM JNB SrValid_F,
CLR SrValid_F ACALL Send_Buffer
MOV SrCtr_M,0 CPL
LED_P MOV
dptr,SetKeylock_T ACALL
Send_Text_TX MOV
dptr,KeyLock_C ;
set key
locked ACALL
Send_Text_SIM JNB
SrValid_F, CLR
SrValid_F ACALL
Send_Buffer MOV
SrCtr_M,0 CPL
LED_P MOV
dptr,SetMute_T ACALL
Send_Text_TX MOV
dptr,Mute_C ;
set mute
ACALL Send_Text_SIM
JNB SrValid_F,
CLR SrValid_F
ACALL Send_Buffer
MOV SrCtr_M,0
CPL LED_P
MOV dptr,PCReady_T
ACALL Send_Text_TX
MOV SrCtr_M,0
SETB LED_P
LCALL CLr_Screen
RET
15. Memberi pakan pada ikan
Do_Feeding MOV
FeedHour_M,0 MOV
FeedMin_M,0 MOV
FeedSec_M,0 LCALL
Save_Feed_Time SETB
Feeding_F CLR
Feeder_P MOV
FTick_M,0 MOV
FSec_M,0 RET
16. Melakukan pergantian air
Do_Pumping MOV
PumpHour_M,0 MOV
PumpMin_M,0 MOV
PumpSec_M,0 LCALL
Save_Pump_Time SETB
Pumping_F SETB
Pump1_P CLR
Pump2_P MOV
PumpState_M,0 RET
17. Menentukan panjang karakter untuk no HP
Phone_C DB 13
18. Penulisan no HP, tidak boleh menggunakan tanda “+”
DB 6285730515185
19. Penerimaan pesan baru
SMSAlert_C DB AT+CNMI=1,2,0,0,1,13,10,0
20. Proses pengiriman pesan dan pembacaan pesan
SendSMS_C DB AT+CMGS=,0
21. Mengontrol panggilan masuk
HangUp_C DB ATH,13,10,0
22. Mengirim informasi setelah melakukan feeding
FeedingOK_SMS DB 17,Feeding OK, T: C,0
23. Mengirim informasi setelah melakukan pumping
PumpingOK_SMS DB 17,Pumping OK, T: C,0
24. Untuk mengatur berapa lama auto feeder akan berputar
SetVT_Cmd DB VT,0
25. Mengatur Suhu
SetST_Cmd DB ST,0
26. Mengatur waktu pemberian pakan ikan
SetSF_Cmd DB SF,0
27. Mengatur waktu pergantian air
SetSP_Cmd DB SP,0
28. Memberikan pakan ikan sekarang
Feed_Cmd DB FEED,0
29. Mengganti air sekarang
Pump_CMd DB PUMP,0