|
|
KENDALI SAKLAR JARAK JAUH MELALUI
SALURAN TELEPON (Public Switch Telephone Network)
oleh : Arif Johar Taufiq
Ini adalah proyek tugas akhir Arif JT pada tahun
1997-1998 yaitu kendali jarak jauh melalui saluran telepon (PSTN) dengan
fitur: Password, menghidupkana dan mematikan beban (obyek), Cek beban dalam keaddaan ON/OFF,Auto disconect dan obyek
dapt diperbanyak sampai 24 obyek. Proyek ini dikerjakan dengan
microcontroler pada jaman itu yaitu dibangun dengan microcontroLler INTEL
8031+EPROM 2764+PPI 8255. Dosen pembimbing waktu itu adalah Ir. Ismadi Isran (Alm)
dan Ir. Dwi Joko Purbohadi, MT.
Pada waktu itu penulisan program harus
di download ke IC EPROM 2764, alamak repotnya kalau program kita masih salah,
harus nungguin dulu ROM 2762 disinari sinar ultraviolet untuk menghapus
isi program. Bandingkan dengan jaman sekarang sudah tersedia uC+FLASHROM
seperti AT89C51, dsb tinggal download lagi aja. Apa lagi yang tipe S semisal
AT89S51 lebih mudah lagi bisa on line downloading in project.
;----------------------------------
; PROGRAM KSJJ
; PROGRAMMER ARIF JOHAR TAUFIQ
;---------------------------------
PORT_A EQU 6000H ; PERHATIAN PENULISAN EQU DSB HARUS RAPAT
PORT_B EQU 6001H ; KE KIRI JIKA PAKAI X8051.EXE !
REG_PPI EQU 6003H ; Kalau pakai ASEM sih tidak masalah !
PASS_1 EQU 09H
PASS_2 EQU 02H
PASS_3 EQU 05H
PASS_4 EQU 06H
PASS_5 EQU 07H
CTL_PDM EQU 0AH ;1010b (0)
CTL_NYL EQU 0BH ;1011B (*)
CTL_KON EQU 0CH ;1100B (#)
TUP_DTMF EQU 09H ;1001B (9)
ORG 00H
LJMP AWAL
;---------------
; INISIALISASI
;---------------
ORG 100H
AWAL: CLR P3.0
CLR P3.1
CLR P3.2
CLR P1.6
CLR P1.7
CLR P3.4
CLR P3.5
MOV DPTR,#REG_PPI
MOV A,#99H
MOVX @DPTR,A
;---------------
; DETEKTOR BEL
;---------------
DET_RING: MOV A,P3
ANL A,#00001000b
CJNE A,#0h,DET_RING
SETB P3.4
;-----------------
; BACA PASSWORD
;-----------------
MOV R0,#03h
LAGI: ACALL TUNDA
ACALL TUNDA
ACALL TUNDA
SETB P3.0
ACALL TUNDA
ACALL TUNDA
CLR P3.0
ACALL TUNDA
ACALL TUNDA
CLR A
BC_PASS1: MOV A,P1
ANL A,#0Fh
CJNE A,#PASS_1,WRG_PASS
HOLD: MOV A,P1
ANL A,#0Fh
CJNE A,#09h,BC_PASS2
SJMP HOLD
BC_PASS2: CJNE A,#PASS_2,WRG_PASS
HOLD1: MOV A,P1
ANL A,#0Fh
CJNE A,#02h,BC_PASS3
SJMP HOLD1
BC_PASS3: CJNE A,#PASS_3,WRG_PASS
HOLD2: MOV A,P1
ANL A,#0Fh
CJNE A,#05h,BC_PASS4
SJMP HOLD2
BC_PASS4: CJNE A,#PASS_4,WRG_PASS
HOLD3: MOV A,P1
ANL A,#0Fh
CJNE A,#06h,BC_PASS5
SJMP HOLD3
BC_PASS5: CJNE A,#PASS_5,WRG_PASS
ACALL ND_PWD_OK
LJMP BC_K
WRG_PASS: ACALL ND_PWD_WRG
DJNZ R0,LAGI
CLR P3.4
SETB P3.5
NOP
NOP
NOP
CLR P3.5
AJMP DET_RING
;------------------
; KENDALI PADAM
;------------------
BC_K: CLR A
MOV A,P1
ANL A,#00001111b
CJNE A,#CTL_PDM,BC_K1
HOLD_KP: MOV A,P1
ANL A,#00001111b
CJNE A,#CTL_PDM,BC_KP_L1
SJMP HOLD_KP
BC_KP_L1: CJNE A,#01h,BC_KP_L2
MOV DPTR,#PORT_A
MOVX A,@DPTR
ANL A,#11111110b
MOV DPTR,#PORT_B
MOVX @DPTR,A
AJMP BC_K
BC_KP_L2: CJNE A,#02H,BC_KP_L3
MOV DPTR,#PORT_A
MOVX A,@DPTR
ANL A,#11111101B
MOV DPTR,#PORT_B
MOVX @DPTR,A
AJMP BC_K
BC_KP_L3: CJNE A,#03h,BC_KP_L4
MOV DPTR,#PORT_A
MOVX A,@DPTR
ANL A,#11111011b
MOV DPTR,#PORT_B
MOVX @DPTR,A
AJMP BC_K
BC_KP_L4: CJNE A,#04H,BC_KP_TP
MOV DPTR,#PORT_A
MOVX A,@DPTR
ANL A,#11110111B
MOV DPTR,#PORT_B
MOVX @DPTR,A
AJMP BC_K
BC_KP_TP: CJNE A,#TUP_DTMF,BC_K
CLR P3.4
SETB P3.5
NOP
NOP
NOP
SETB P3.5
AJMP DET_RING
;--------------------
; INFO BEBAN
;--------------------
NXT_BC_K2: AJMP BC_K2
BC_K1: CJNE A,#CTL_KON,NXT_BC_K2
HOLD_KK: MOV A,P1
ANL A,#00001111b
CJNE A,#CTL_KON,BC_KK_L1
SJMP HOLD_KK
BC_KK_L1: CJNE A,#01H,BC_KK_L2
MOV DPTR,#PORT_A
MOVX A,@DPTR
ANL A,#00000001b
CJNE A,#00000001B,IS_PDM1
ACALL ND_NYALA
AJMP BC_K
IS_PDM1: ACALL ND_PADAM
AJMP BC_K
BC_KK_L2: CJNE A,#02h,BC_KK_L3
MOV DPTR,#PORT_A
MOVX A,@DPTR
ANL A,#00000010b
CJNE A,#00000010B,IS_PDM2
ACALL ND_NYALA
AJMP BC_K
IS_PDM2: ACALL ND_PADAM
AJMP BC_K
BC_KK_L3: CJNE A,#03h,BC_KK_L4
MOV DPTR,#PORT_A
MOVX A,@DPTR
ANL A,#00000100b
CJNE A,#00000100B,IS_PDM3
ACALL ND_NYALA
AJMP BC_K
IS_PDM3: ACALL ND_PADAM
AJMP BC_K
BC_KK_L4: CJNE A,#04h,TOKK_BC_K
MOV DPTR,#PORT_A
MOVX A,@DPTR
ANL A,#00001000b
CJNE A,#00001000B,IS_PDM4
ACALL ND_NYALA
AJMP BC_K
IS_PDM4: ACALL ND_PADAM
TOKK_BC_K: AJMP BC_K
;-------------------
; KENDALI NYALA
;-------------------
NXT_BC_K3: AJMP BC_K
BC_K2: CJNE A,#CTL_NYL,NXT_BC_K3
HOLD_KN: MOV A,P1
ANL A,#00001111b
CJNE A,CTL_NYL,BC_KN_L1
SJMP HOLD_KN
BC_KN_L1: CJNE A,#01H,BC_KN_L2
MOV DPTR,#PORT_A
MOVX A,@DPTR
ORL A,#00000001B
MOV DPTR,#PORT_B
MOVX @DPTR,A
AJMP BC_K
BC_KN_L2: CJNE A,#02H,BC_KN_L3
MOV DPTR,#PORT_A
MOVX A,@DPTR
ORL A,#00000010B
MOV DPTR,#PORT_B
MOVX @DPTR,A
AJMP BC_K
BC_KN_L3: CJNE A,#03H,BC_KN_L4
MOV DPTR,#PORT_A
MOVX A,@DPTR
ORL A,#00000100B
MOV DPTR,#PORT_B
MOVX @DPTR,A
AJMP BC_K
BC_KN_L4: CJNE A,#04H,TOKN_BC_K
MOV DPTR,#PORT_A
MOVX A,@DPTR
ORL A,#00001000B
MOV DPTR,#PORT_B
MOVX @DPTR,A
TOKN_BC_K: AJMP BC_K
;------------------
; KUMPULAN PROSEDUR
;------------------
ND_NYALA: SETB P1.7
ACALL TUNDA
CLR P1.7
RET
ND_PADAM: SETB P1.6
ACALL TUNDA
CLR P1.6
RET
ND_PWD_OK: SETB P3.1
ACALL TUNDA
CLR P3.1
RET
ND_PWD_WRG: MOV R1,#05H
SETB P3.2
T_PWD_WRG: ACALL TUNDA
DJNZ R1,T_PWD_WRG
CLR P3.2
RET
TUNDA: MOV R7,#00H
ULANG2: MOV R6,#00H
ULANG1: MOV R5,#00H
ULANG: INC R5
CJNE R5,#30H,ULANG
INC R6
CJNE R6,#30H,ULANG1
INC R7
CJNE R7,#30H,ULANG2
RET
END
|
|