Jumat, 27 Juni 2014
AN-0191 Sistem Alarm Rumah berbasis MMS dilengkapi dengan Camera Interface
Pada diagram alir tersebut terdapat dua aliran, yang pertama adalah program utama yang bekerja mendeteksi kondisi-kondisi sensor. Saat salah satu sensor mendeteksi ada obyek atau kebakaran maka program akan langsung mengirimkan foto dalam bentuk MMS beserta teks yang menunjukkan informasi sensor apa yang aktif sehingga pengguna dapat mengetahui jenis sensor yang aktif dari MMS yang diterima di HP.
Diagram alir kedua adalah interupsi serial yang mendeteksi pesan SMS yang dikirim oleh pengguna melalui HP dan diterima oleh SIM5216. Pesan ini diteruskan ke DST-51 dan apabila pesan tersebut berisi SMS “ambilfoto” maka DST-51 akan memerintahkan SIM5216 untuk mengirimkan foto. Bagian ini digunakan apabila pengguna ingin melihat kondisi melalui camera setiap saat.
Agar sistem yang dirangkai dapat bekerja sesuai diagram alir tersebut maka program atau source code perlu diisikan ke dalam DST-51 terlebih dahulu.
Lebih detail mengenai cara untuk download program ke DST-51 dapat dilihat di AN0160.
LISTING PROGRAM
$MOD51
CSEG
DeviceID EQU 057h ;ID Telemeter
PowerKey Bit P1.0
CTS Bit P1.2
RTS Bit P1.3
SIMVDD Bit P3.7 ;belum tahu
Indicator Bit P1.7
SensorSmoke Bit P2.2
SensorInfra1 Bit P2.3
SensorInfra2 Bit P2.4
SensorInfra3 Bit P2.5
SensorSonar Bit P2.6
SetPointSensorSuhu EQU 80h
DSEG
Org 36H
PTR: Ds 2
PTR2: Ds 2
PTR3: Ds 2
RAM_ID: Ds 1
RAM_HPServer: Ds 15
RAM_OperatorNumber: Ds 10
TF0Counter: Ds 1
IndexSMS: Ds 1
IndexPerintah: Ds 1
CheckSum: Ds 1
PrescaleTimer: Ds 1
CounterHP: Ds 1
;
Flag3: Ds 1 ;Flag Serba guna
BufferSensTemp: Ds 5
BufferSensor: Ds 5
Status: Ds 1 ;Bit 0 = Flag Sensor Infra 1
;Bit 1 = Flag Sensor Infra 2
;Bit 2 = Flag Sensor Infra 3
;Bit 3 = Flag Sensor Smoke
;Bit 4 = Flag Sensor sonar
;Bit 5 = Flag Sensor suhu
;Bit 6 = Flag Sensor Infra 1 diproses
;Bit 7 = Flag Sensor Infra 2 diproses
Status2: Ds 1 ;Bit 0 = Flag Sensor Infra 3 diproses
;Bit 1 = Flag Sensor Smoke diproses
;Bit 2 = Flag Sensor Sonar diproses
;Bit 3 = Flag Sensor Suhu diproses
CSEG
Org 000H
Ljmp Start
Org 003H
ljmp intr0
Org 00Bh
Ljmp Timer0Interrupt
Org 013H
Ljmp INTR1
Org 023h
LJmp SerialInterrupt
Intr0:
Reti
INTR1:
Reti
;============================================
; Kalau Call Ready = GSM On
; Kalau 's' = koneksi dengan PC
PBDone:
DB 'PB DONE',0
TurnONGSM:
Clr PowerKey
Mov R7,#100
Lcall Delayx10mS
Setb PowerKey
TungguCommandBerikut:
Lcall TungguCommand
Mov DPTR,#PBDone
Mov R0,#BufferPerintah
Lcall CompareRAMnTabel
Jc TungguCommandBerikut
Ljmp GSMSudahON ;
TurnONGSM2:
LJmp TurnONGSM
CompareRAMnTabel:
Mov B,@R0
Inc R0
Mov A,#00
Movc A,@A+DPTR
Jz RAMdanTabelCocok
Inc DPTR
Clr C
Subb A,B
Jnz RAMTidakCocok
Ljmp CompareRAMnTabel
RAMdanTabelCocok:
Clr C
Ret
RAMTidakCocok:
Setb C
Ret
Start:
Lcall Init_Serial
Mov Status,#0FFh
Mov Flag3,#0FFh
Mov DPTR,#ID
Lcall DPTRSEE16bit
Cjne A,#DeviceID,SetDef
Ljmp NoDefault
SetDef:
Lcall SetDefault
NoDefault:
Lcall Init_Serial ;Inisial Serial 11.5200
Clr RI
Clr TI
Jnb SIMVDD,TurnONGSM2 ;Cek GSM aktif?
GSMSudahON:
Mov R7,#100
Lcall Delayx10mS
Lcall ClearBufferPerintah ;Hapus data di buffer perintah
Lcall InitTimer ;Aktifkan Interupsi Timer
Mov PreScaleTimer,#200
Mov TF0Counter,#00 ;Set Prescaler
Setb EA
Setb ET0
Lcall InitGSM
Lcall DeleteAllSMS ;Hapus Semua SMS
Setb TR0
Clr RI
Clr TI
Ljmp $
;================================================================================
; END OF MAIN PROGRAM
Selasa, 10 Juni 2014
PERANCANGAN PENGENDALIAN PERALATAN LAMPU LISTRIK JARAK JAUH MENGGUNAKAN TELEPON SELULER (tugas 3)
Alur program yang
diberikan ke HP yang pertama adalah pengaturan mode stanby. Dengan mode ini, HP
akan secara otomatis memberikan pemberiahuan ke mikrokontroler jika ada SMS
masuk. Dengan adanya mode ini, mikrokontroler memantau adanya pemberitahuan
dari HP jika ada SMS masuk. Mode stand-by diberikan dengan perintah
AT+CNMI=1,1. Dengan perintah ini secara otomatis HP akan diset pada posisi
stand-by. Setelah perintah ini HP diberi perintah AT+CMGD=1. Perintah ini
digunakan untuk menghapus inbox pada index memory pertama. Jika index pertama
kosong, maka secara otomatis jika ada SMS masuk akan masuk ke lokasi index
pertama.
Jika ada SMS masuk, mikrokontroler akan memberikan perintah untuk membaca isi inbox. Perintah yang diberikan adalah AT+CMGR=1. Angka 1 menunjukkan lokasi inbox yang akan dibaca. Setelah perintah ini diberikan HP akan memberikan data-data PDU yang merupakan isi dari SMS.
Isi SMS akan dikomparasi dengan kata kunci yang ada. Jika sesuai maka mikrokontroler akan mengeksekusi perintah tersebut. Namun jika isi SMS tidak dikenali, maka mikrokontroler akan memberikan pesan error. Dan tidak akan mengeksekusi perintah tersebut. Jika perintah sesuai kata kunci mikrokontroler akan mengeksekusi perintah tersebut. Kemudian memantau kondisi sensor dan memberikan SMS balasan.
Jika ada SMS masuk, mikrokontroler akan memberikan perintah untuk membaca isi inbox. Perintah yang diberikan adalah AT+CMGR=1. Angka 1 menunjukkan lokasi inbox yang akan dibaca. Setelah perintah ini diberikan HP akan memberikan data-data PDU yang merupakan isi dari SMS.
Isi SMS akan dikomparasi dengan kata kunci yang ada. Jika sesuai maka mikrokontroler akan mengeksekusi perintah tersebut. Namun jika isi SMS tidak dikenali, maka mikrokontroler akan memberikan pesan error. Dan tidak akan mengeksekusi perintah tersebut. Jika perintah sesuai kata kunci mikrokontroler akan mengeksekusi perintah tersebut. Kemudian memantau kondisi sensor dan memberikan SMS balasan.
Listing program pascal
TUNGGU KARAKTER
BALASAN '"'
ADA_SMS: CLR RI ;
JNB RI,CEKS1
jmp star
CEKS1: JB SAKLAR_1,CEKS
JNB SAKLAR_1,$
CPL LAMPU1
CALL TUNDA_LONG
SJMP GO
CEKS: JNB RI,CEKS2
jmp star
CEKS2: JB SAKLAR_2,GO
JNB SAKLAR_2,$
CPL LAMPU2
CALL TUNDA_LONG
SJMP GO
GO: JNB RI,CEKS1
star: MOV A,SBUF ;TUNGGU ADA SMS MASUK
INC R0
CJNE A,#'"',ADA_SMS
MOV R0,#7 ;AMBIL 7 KARAKTER BERIKUTNYA
CALL AMBIL_SERIAL
CALL BACA_SMS ;BACA DAN SIMPAN NO HP
MOV R0,#18 ;AMBIL 18 KARAKTER BERIKUTNYA
CALL AMBIL_SERIAL ;
MOV R1,#45H ;SIMPAN ISI INBOX MULAI
ALAMAT 45H
MOV R0,#00 ;CLEAR COUNTER
CALL SIMPAN_KATA2
SJMP BANDING
BANDING: MOV DPTR,#L1ON ;AMBIL CODE PDU 'LAMPU 1 ON'
MOV R0,#12 ;BANDNGKAN 20X
CALL BANDING_KATA
JB flag_sms,DATA_BEDA2 ;JIKA BEDA LOMPAT KE LABEL
MOV 21H,#1
SETB LAMPU1
setb memori_relai.0
CALL TUNDA_LONG
JMP SEND_SMS
DATA_BEDA2: MOV DPTR,#L2ON
MOV R0,#12
CALL BANDING_KATA
JB flag_sms,DATA_BEDA3
MOV 21H,#2
SETB LAMPU2
setb memori_relai.1
CALL TUNDA_LONG
JMP SEND_SMS
DATA_BEDA3: MOV DPTR,#L1OFF
MOV R0,#14
CALL BANDING_KATA
JB flag_sms,DATA_BEDA4
MOV 21H,#9
CLR LAMPU1
clr memori_relai.0
CALL TUNDA_LONG
JMP SEND_SMS
DATA_BEDA4: MOV DPTR,#L2OFF
MOV R0,#14
CALL BANDING_KATA
JB flag_sms,DATA_BEDA5
MOV 21H,#10
CLR LAMPU2
clr memori_relai.1
CALL TUNDA_LONG
JMP SEND_SMS
DATA_BEDA5: MOV DPTR,#STAT1
MOV R0,#14
CALL BANDING_KATA
JB flag_sms,DATA_BEDA6
MOV 21H,#17
CALL TUNDA_LONG
JMP SEND_SMS
DATA_BEDA6: MOV DPTR,#STAT2
MOV R0,#14
CALL BANDING_KATA
JB flag_sms,DATA_BEDA7
MOV 21H,#18
CALL TUNDA_LONG
JMP SEND_SMS
DATA_BEDA7: MOV 21H,#25
CALL TUNDA_LONG
JMP SEND_SMS
;>>>>>>>>>>>>>>>>>>>>>>>>RUTIN
PENGIRIMAN
SMS>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Isi_2: djnz r4,TUNGGU2
JMP MULAI
SEND_SMS: MOV DPTR,#SMSSEND ;BACA SMS
CALL KIRIM_DATA ;KIRIM PERINTAH
mov r4,#1
sjmp TUNGGU2
TUNGGU2: CALL TERIMA_DATA
CJNE A,#'>',Isi_2 ;TUNGGU KARAKTER >
MOV
DPTR,#SMS_CENTER ;KIRIM NO
SMS CENTER
MOV R0,#6
BERULANG1A: CLR A
MOVC A,@A+DPTR
CALL KIRIM_SERIAL
INC DPTR
DJNZ R0,BERULANG1A
MOV R0,70H ;JUMLAH NO HP
MOV A,R0
ADD A,#2
MOV R0,A
MOV R1,#30H ;ALAMAT AWAL NO HP
BERULANG2A: CLR A
MOV A,@R1
CALL KIRIM_SERIAL
INC R1
DJNZ R0,BERULANG2A
MOV DPTR,#REF_SMS ;KIRIM NO REFFERENSI SMSM
MOV R0,#6 ;'000000'
BERULANG3A: CLR A
MOVC A,@A+DPTR
CALL KIRIM_SERIAL
INC DPTR
DJNZ R0,BERULANG3A
clr a
MOV A,21H
CJNE A,#1,CEK_FLAG2
CALL ISI_L1ON
JMP DONE
CEK_FLAG2: CJNE A,#2,CEK_FLAG3
CALL ISI_L2ON
JMP DONE
CEK_FLAG3: CJNE A,#9,CEK_FLAG4
CALL ISI_L1OFF
JMP DONE
CEK_FLAG4: CJNE A,#10,CEK_FLAG5
CALL ISI_L2OFF
JMP DONE
CEK_FLAG5: CJNE A,#17,CEK_FLAG6
jmp Cek_1
Cek_1: JB LAMPU1,CEK_SEN1
CALL ISI_L1Off
JMP DONE
CEK_SEN1: JNB LAMPU1,CEK_FLAG7
CALL ISI_L1On
JMP DONE
CEK_FLAG6: CJNE A,#18,CEK_FLAG7
jmp Cek_2
cek_2: JB LAMPU2,CEK_SEN2
CALL ISI_L2Off
JMP DONE
CEK_SEN2: JNB LAMPU2,CEK_FLAG7
CALL ISI_L2On
JMP DONE
CEK_FLAG7: CALL ISI_UNKNOW
JMP DONE
DONE: MOV A,#1AH ;DONE
CALL KIRIM_SERIAL
mov r4,#5
tunggu: CALL TERIMA_DATA
CJNE A,#'K',Isi_1
CALL HAPUS_INBOX
CALL MODE_STANBY
JMP ADA_SMS
JMP $
Isi_1: djnz r4,tunggu
JMP MULAI
;>>>>>>>>>>>>>>>>>>>SUB
RUTIN PENGISIAN KATA
SMS>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
ISI_L1ON: MOV DPTR,#REPORT1
MOV R0,#30
BERULANG1: CLR A
MOVC A,@A+DPTR
CALL KIRIM_SERIAL
INC DPTR
DJNZ R0,BERULANG1
RET
ISI_L2ON: MOV DPTR,#REPORT2
MOV R0,#30
BERULANG2: CLR A
MOVC A,@A+DPTR
CALL KIRIM_SERIAL
INC DPTR
DJNZ R0,BERULANG2
RET
ISI_L1OFF: MOV DPTR,#REPORT3 ;AMBIL DATA TABEL
MOV R0,#30
BERULANG9: CLR A
MOVC
A,@A+DPTR
CALL KIRIM_SERIAL
INC DPTR
DJNZ R0,BERULANG9
RET
ISI_L2OFF: MOV DPTR,#REPORT4 ;AMBIL DATA TABEL
MOV R0,#30
BERULANG10: CLR A
MOVC A,@A+DPTR
CALL KIRIM_SERIAL
INC DPTR
DJNZ R0,BERULANG10
RET
ISI_UNKNOW: MOV DPTR,#UNKNOW
MOV R0,#30
BERULANG40: CLR A
MOVC A,@A+DPTR
CALL KIRIM_SERIAL
INC DPTR
DJNZ R0,BERULANG40
RET
;>>>>>>>>>>>>>>>>>>>>>INISIALISASI
BAUT RATE
19200>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
INITIAL: MOV SCON,#50H ;INISIALISASI BAUD RATE 19200
MOV TMOD,#20H
Mov 87h,#80h
MOV TH1,#0FdH
SETB TR1
RET
;>>>>>>>>>>>>>>>>>>>>HAPUS
SMS DI LOKASI INBOX INDEX
1>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
HAPUS_INBOX: MOV DPTR,#HAPUS ;KIRIM PRINTAH 'AT+CMGD=1'
LAGI1:
;HAPUS INBOX
CLR A ;KOSONGKAN ACC
MOVC A,@A+DPTR ;AMBIL DATA TABEL YANG DITUNJUK
DPTR
CLR TI ;AKTIVASI KIRIM SERIAL
MOV SBUF,A ;KIRIMKAN DATA
JNB TI,$ ;TUNGGU SELESAI DIKIRIM
INC DPTR ;NAIKKAN PENUNJUK TABEL
CJNE A,#00,LAGI1 ;TUNGGU SEMUA KARAKTER DIKIRIM
TUNGGU_A: CLR RI ;AKTIVASI TERIMA SERIAL
JNB RI,$ ;TUNGGU TERIMA KARAKTER
MOV A,SBUF ;AMBIL DATA SERIAL KE ACC
CJNE A,#10,tunggu_a ;TUNGGU HINGGA BALASAN '10'
RET
;>>>>>>>>>>>>>>>>>>>>>>>>>>>AKTIVASI
MODE
STANBY>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
MODE_STANBY: MOV DPTR,#PESAN ;KIRIM PERINTAH 'AT+CNMI=1,1'
LAGI2: CLR A ;RESET ACC
MOVC A,@A+DPTR ;AMBIL KARAKTER DARI TABEL
CLR TI ;AKTIVASI KIRIM SERIAL
MOV SBUF,A ;KELUARKAN DATA DARI ACC KE
BUFFER
JNB TI,$ ;KIRIM SERIAL
INC DPTR ;NAIKKAN PENUNJUK TABEL
CJNE A,#00,LAGI2 ;TUNGGU SEMUA KARAKTER SELESAI
RET
TERIMA_DATA: mov r4,#255 ;RUTIN TERIMA DATA 1 BYTE
mov r5,#255
mov r6,#100
CLR RI ;DATA DISIMPAN DI ACC
tunggu_3: JNB RI,isi_3
MOV A,SBUF
RET
Isi_3: djnz r4,tunggu_3
djnz r5,tunggu_3
djnz r6,tunggu_3
JMP MULAI
;>>>>>>>>>>>>>>>>>RUTIN
KIRIM DATA DARI
TABEL>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
KIRIM_DATA: mov r4,#255 ;RUTIN KIRIM DATA 1 BYTE
mov r5,#255
mov r6,#5
CLR A ;RESET ACC
MOVC A,@A+DPTR ;AMBIL KARAKTER DARI TABEL
CLR TI ;AKTIVASI KIRIM SERIAL
MOV SBUF,A ;KELUARKAN DATA DARI ACC KE
BUFFER
tunggu_6: JNB TI,isi_6 ;KIRIM SERIAL
INC DPTR ;NAIKKAN PENUNJUK TABEL
;RUTIN KIRIM DATA 1 BYTE
CJNE A,#00,KIRIM_DATA ;TUNGGU SEMUA KARAKTER SELESAI
RET
Isi_6: djnz r4,tunggu_6
djnz r5,tunggu_6
djnz r6,tunggu_6
JMP MULAI
;>>>>>>>>>>>>>>>SUB RUTIN
KIRIM DATA SERIAL 1
BYTE>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
KIRIM_SERIAL: mov r4,#255 ;RUTIN KIRIM serial 1 BYTE
mov r5,#255
mov r6,#5
CLR TI
MOV SBUF,A
tunggu_4: JNB TI,Isi_4
RET
Isi_4: djnz r4,tunggu_4
djnz r5,tunggu_4
djnz r6,tunggu_4
JMP MULAI
;>>>>>>>>>>>>>>>>>>>>>>>>>SUB
RUTIN KIRIM DATA SERIAL
DGN>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;>>>>>>>>>>>>>>>>>>>>>>>>>>>JUMLAH
BYTE TERGANTUNG
R0>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
KIRIM_COUNT: mov r4,#255
mov r5,#255
mov r6,#5
CLR A
CLR TI
MOV A,@R1
MOV SBUF,A
tunggu_5: JNB TI,Isi_5
INC R1
DJNZ R0,KIRIM_SERIAL
RET
Isi_5: djnz r4,tunggu_5
djnz r5,tunggu_5
djnz r6,tunggu_5
JMP MULAI
;>>>>>>>>>>>>>>>>>>>>SUB
RUTIN TERIMA DATA SERIAL
DGN>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;>>>>>>>>>>>>>>>>>>>>>>>>>>JUMLAH
BYTE TERGANTUNG
R0>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
AMBIL_SERIAL: CLR RI ;TUNGGU KARAKTER BALASAN ','
JNB RI,$
MOV A,SBUF ;TUNGGU ADA SMS MASUK
DJNZ R0,AMBIL_SERIAL
RET
;>>>>>>>>>>>>>>>SUB RUTIN
KONVERSI CODE ASCII KE
HEXA>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
ASCII_HEX: PUSH ACC
MOV A,B
ANL A,#0F0H ; AMBIL HIGH NIBLE
CJNE A,#30H,BUKAN_ANGKA
ANGKA: MOV A,B
ANL A,#0FH ; AMBIL LOW NIBLE
MOV B,A
POP ACC
RET
BUKAN_ANGKA: MOV A,B
ANL A,#0FH
ADD A,#9
MOV B,A
POP ACC
RET
;>>>>>>>>>>>>>>>>>>>>>>>>SUB
RUTIN BACA
SMS>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
BACA_SMS: MOV DPTR,#SMSREAD ;BACA SMS
CALL KIRIM_DATA ;KIRIM PERINTAH 'AT+CMGR=1'
BACA: CALL TERIMA_DATA ;AMBIL DATA BALASAN
CJNE A,#',',BACA ;TUNGGU KARAKTER ','
sJMP BACA1
BACA1: CALL TERIMA_DATA ;AMBIL DATA BALASAN
CJNE A,#0AH,BACA1 ;TUNGGU KARAKTER STOP BYTE
MOV R0,#2
CALL AMBIL_SERIAL ;AMBIL JUMLAH PAKET DATA SMSC
MOV B,A
CALL ASCII_HEX ;KONVERSI DATA ASCII KE HEX
MOV A,B
MOV B,#2
MUL AB ;KALIKAN 2
MOV R0,A ;JADIKAN COUNTER
CALL AMBIL_SERIAL
MOV R0,#2
CALL AMBIL_SERIAL ;AMBIL JUMLAH PAKET DATA SMSC
MOV R0,#2 ;2 KARAKTER BERIKUTNYA
CALL AMBIL_SERIAL ;AMBIL NO HP
CJNE A,#'B',CEK_DIGIT1 ;NO HP 10 DIGIT
MOV R0,#14
MOV 70H,R0 ;JUMLAH NO HP DISIMPAN DI R2
JMP COUNT_LAGI1
CEK_DIGIT1: CJNE A,#'C',CEK_DIGIT2
MOV R0,#14 ;NO HP 11 DIGIT
MOV 70H,R0 ;JUMLAH NO HP DISIMPAN DI R2
JMP COUNT_LAGI2
CEK_DIGIT2: CJNE A,#'D',EXITZ ;NO HP 12 DIGIT
MOV R0,#16
MOV 70H,R0 ;JUMLAH NO HP DISIMPAN DI R2
JMP COUNT_LAGI3
EXITZ: JMP MULAI
COUNT_LAGI1: MOV 30H,#'0'
MOV 31H,#'B'
MOV R1,#32H
COUNT1: CLR RI ;AMBIL DATA NO HP
JNB RI,$
MOV A,SBUF
MOV @R1,A
INC R1
DJNZ R0,COUNT1
JMP NEXT
COUNT_LAGI2: MOV 30H,#'0'
MOV 31H,#'C'
MOV R1,#32H
COUNT2: CLR RI ;AMBIL DATA NO HP
JNB RI,$
MOV A,SBUF
MOV @R1,A
INC R1
DJNZ R0,COUNT2
JMP NEXT
COUNT_LAGI3: MOV 30H,#'0'
MOV 31H,#'D'
MOV R1,#32H
COUNT3: CLR RI ;AMBIL DATA NO HP
JNB RI,$
MOV A,SBUF
MOV @R1,A
INC R1
DJNZ R0,COUNT3
JMP NEXT
NEXT: RET
;>>>>>>>>>>>>>>>>>>SUB
RUTIN PENYIMPANAN KODE
PDU>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
SIMPAN_KATA: CLR A
CALL TERIMA_DATA
MOV @R1,A
INC R1
DJNZ R0,SIMPAN_KATA ;SIMPAN PDU KE BUFFER MULAI 45H
RET
;>>>>>>>>>>>>>>>>>>>SUB
RUTIN PENYIMPANAN KODE
PDU>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
SIMPAN_KATA1: CLR A
CALL TERIMA_DATA
MOV @R1,A
INC R1
CJNE A,#0DH,SIMPAN_KATA1 ;SIMPAN PDU KE BUFFER MULAI 45H
RET
;>>>>>>>>>>>>>>>>>>>>>>>SUB
RUTIN PENYIMPANAN KODE
PDU>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
SIMPAN_KATA2: CLR A
CALL TERIMA_DATA
MOV @R1,A
INC R1
INC R0
CJNE R0,#30,TRS
JMP TRS1
TRS: CJNE A,#0DH,SIMPAN_KATA1 ;SIMPAN PDU KE BUFFER MULAI 45H
TRS1: RET
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>TUNDA
WAKTU>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
TUNDA_LONG: MOV R5,#010H
JJz: CALL TUNDA
DJNZ R5,JJz
RET
TUNDA: MOV R7,#100
LD1: DJNZ R6,$
DJNZ R7,LD1
RET
;>>>>>>>>>>>>>>>>>>>>>>>>>>SUB
RUTIN BANDING BUFFER DGN
TABEL>>>>>>>>>>>>>>>>>>>>>>>>>>
BANDING_KATA: MOV R1,#45H
ULANG_BANDING: CLR A
MOVC A,@A+DPTR
XRL A,@R1
JZ SAMA
SETB flag_sms
RET
SAMA: INC DPTR
INC R1
DJNZ R0,ULANG_BANDING
CLR flag_sms
RET
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>Data
PDU
SMS>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
UNKNOW:
DB '0FD0B23CEDA687D1A069981D468300' ;Perintah Salah
DB 0
L1ON:
DB '05CC18E8ED06' ;L1 on
L2ON:
DB '054C19E8ED06' ;L2 on
L1OFF:
DB '06CC18E86D3603' ;L1 off
L2OFF:
DB '064C19E86D3603' ;L2 off
STAT1:
DB '06C3F21AC48C01' ;Cek L1
STAT2:
DB '06C3F21AC49401' ;Cek L2
REPORT1:
DB '0FCF350BC40CB7E175500CF4748300' ;Ok, Lampu 1 On
REPORT2:
DB '0FCF350BC40CB7E175900CF4748300' ;Ok, Lampu 2 On
REPORT3:
DB '0FCF350BC40CB7E175500CF4349B01' ;Ok, Lampu 1 Off
REPORT4:
DB '0FCF350BC40CB7E175900CF4349B01' ;Ok, Lampu 2 Off
SMSSEND:
DB 'AT+CMGS=29',13,10
DB 0
REF_SMS:
DB '000000'
DB
0
SMS_CENTER:
DB '001100'
DB 0
SMSREAD:
DB 'AT+CMGR=1',13,10
DB 0
PESAN:
DB 'AT+CNMI=1,1',13,10
DB 0
HAPUS: DB 'AT+CMGD=1',13,10
DB 0
END
Langganan:
Postingan (Atom)