Anda di halaman 1dari 14

Pemantau Temperatur Ruangan Melalui SMS

1. Rancangan Blok Diagram Sistem


Untuk mempermudah pembuatan sebuah sistem maka dibuat diagram blok. Sistem
terdiri dari beberapa sub-sistem dan diagram blok adalah suatu gambaran hubungan antara
sub-sistem dari suatu sistem. Dengan adanya diagram blok maka dapat dilihat prinsip kerja
dari sistem. Setelah diagram blok tersedia selanjutnya dilakukan perancangan blok (sub-
sistem).
Dalam perancangan alat pemantau temperatur dua bagian, yaitu perangkat keras dan
perangkat lunak. Perangkat keras terdiri dari rangkaian pendeteksi tempertur, rangkaian
sistem minimum mikrokontroller AT89S51, pengubah level TTL ke level RS-232. Perangkat
yang diperlukan untuk komunikasi adalah Modem GSM. Adapun blok diagram sistem
penedeteksi temperatur diperlihatkan pada gambar 1
Sensor
Port P0 ADC Temperatur
0804

P2.0 Driver Kipas


Mikrokontroler
Converter AT89S51
TTL ke P2.1 Alaram
Ponsel RS-232

Modem GSM
Pengendali
Gambar 1. Blok Diagram Sistem Pendeteksi Temperatur

2. Rangkaian Mikrokontroler AT89S51


Rangkaian mikrokontroller berfungsi untuk mendeteksi temperatur ruangan dengan
mengontrol exhaust-fan/pendingin. Jika temperatur ruangan melebihi dari yang diset
mikrokontroller akan menghidupkan Exhaust_fan atau pendingin dan alaram serta mengirim
pesan ke ponsel pemilik yang berupa level temperatur dan peringatan.
Pada rangkaian mikrokontroler menggunakan osilator kristal, dimana frekuensi
kristal yang digunakan sebagai sumber clock adalah 11,059200 MHz yang menghasilkan
frekuensi kerja mikrokontroler sebesar 0,921600MHz dengan demikian periode kerja adalah
1,085069µS.
Agar mikrokontroler reset pada saat awal beroperasi (saat power di-ON-kan) pada
masukan Reset diberi rangkaian RC seperti ditunjukkan pada gambar 3.2. Rangkaian R-C ini
disebut rangkaian “power on reset”, artinya rangkaian akan otomatis mereset AT89S51 setiap
AT89S51 awal menerima sumber daya listrik dan pada saat reset mikrokontroler akan selalu
menjalankan program dari alamat 0000H.
Pada saat awal power di-ON-kan (t=0) kapasitor dalam keadaan kosong sehingga
tegangan pada masukan Reset adalah +5V (5V-0=5V) dengan demikian mikrokontroller
dalam keadaan reset. Pada saat t>0 kapasitor dimuati hingga mencapai level 2/3Vcc. Pada
saat kapasitor dimuati hingga menghasilkan tegangan sebesar level logika 0 pada masukan
Reset akan membuat mikrokontroler mulai bekerja (opersional). Lamanya pengisian
kapasitor hingga mencapai level 2/3 Vcc yang menghasilkan level logika 0 pada masukan
Reset adalah:
t = 0,7.R.C
dengan nilai R=10 K dan C=10μF didapat:
t = (0,7) (10 x 10 3 ) (10 x 10 6 )
t = 0,07 s = 70 ms
Perancangan rangkaian mikrokontroler AT89S51 ini dapat dilihat pada gambar 3.2.

+5 V +5V
40 +5V
31 EA Vcc

C3
10uF 21
P0.0
9 22
RST P0.1
P0.2 23
10K R17 P0.3 24 Saluran
A P0.4 25 Data
P0.5 26 ADC
T P0.6 27
28
8 P0.7
16
P3.6 Ke WR ADC 0804
9 15 Ke INTR ADC 0804
6 P3.5
Ke Driver Kipas P2.0 S P3.7 17

Ke Driver Alaram
7
P2.1
5 220
P0.0 39 +5V
1 + 5V

1 +C1 16
+ VCC
10uF
4,7uF 3 -C1 2 +
+V +
4 +C2 6
+ -V 10uF
C1 5 10uF
19 4,7uF -C2 15 +
X1 10 GND
33pF T1I MAX T2O 7

Ke Modem GSM
XTAL 11 11 232
5
TXD 8 4
6
T2I R2I
9 13 3
18 R2O R1I 14
X2 10 12 2
C2 33pF RXD T1O
GND R1O 19
11.059200MHz
Sudah Dicross

Gambar 2. Rangkaian sistem mikrokontroler AT89S51


Rancangan sistem yang dibangun mempunyai sistem jaringan komunikasi antara
mikrokontroller dengan Modem GSM untuk mengirimkan informasi temperatur ke ponsel
pemantau. Untuk menghubungkan mikrokontroller ke modem digunakan chip MAX 232
yang berfungsi untuk mengubah level mikrokontroller ke level tegangan RS-232 yaitu logika
0 diubah menjadi tegangan +10V dan logika 1 diubah menjadi tegangan -10V. Register
tempat data yang diterima atau yang akan dikirim pada mikrokontroller diakses melalui
register SBUF ( Serial Buffer ).

3. Rangkaian Sensor

Sensor yang digunakan untuk mendeteksi temperatur adalah sensor semikonduktor


LM35 yang mempunyai kepekaan 10mV/ ºC . Sensor LM35 akan menghasilkan tegangan
output sebanding dengan temperatur ruangan dimana besar tegangan output adalah nilai
temperatur dalam derajat celcius (ºC) dikali 10mV. Jika temperatur ruangan 35ºC maka
tegangan output sensor adalah 35x10mV=350mV.
Sensor LM35 dapat bekerja mulai dari temperatur -55ºC sampai 150ºC tetapi pada
penelitian ini sensor dirancang untuk mengukur temperatur ruangan diatas 0ºC, dengan
demikian tegangan keluaran minimum adalah 0 mV dan maksimum 1500 mV atau 1,5V.
Rangkaian sensor temperatur yang digunakan ditunjukkan pada gambar 3. Kapasitor dan
resistor berfungsi sebagai filter untuk menghilangkan riak (noise) sehingga tegangan keluaran
sensor stabil sesuai dengan temperatur ruangan.
+5V

Sensor
Temperatur
Vout 2K2 Ke
LM 35 ADC
150pF

Gambar 3 Rangkaian sensor Temperatur LM35


4. Rangkaian ADC
Pada perancangan ini, penggunaan rangkaian ADC 0804 berfungsi untuk
mengkonversi tegangan analog yang dikeluarkan sensor temperatur LM35 menjadi data
digital 8-bit. Rangkaian pengubah analog ke digital digunakan menggunakan ADC0804
seperti ditunjukkan pada gambar 4. Pada perancangan ini nilai RC sebagai penghasil clock
konversi dipilih dengan nilai R = 10K dan C 150pF dengan demikian frekuensi kerja dari
ADC0804 adalah
0,91
f 
RxC
0,91
f   606,66kHz
10000 x150 x10 6
Dengan frekuensi kerja ini, kecepatan konversi ADC dianggap telah memadai, dimana
pengaksesan temperatur cukup setiap lima detik.
+5V +5V
20
VCC 11
D7
2K2 12
D6
9 13
1,28 Volt Vref/2 D5
D4 14 Ke Port
10K 15 P1
D3
ADC 0804

16
D2
17
6 D1
Dari 18
Vin(+) D0
Sensor
LM35 3
19 WR
CLK R P3.6
5
INTR P3.2
RD 2
10K P3.7
4
CLK IN 1
CS
150pF
GND AGND
10 8

Gambar 4. Rangkaian Konverster Analog ke Digital ADC 0804

Pengubah tegangan analog ke digital ADC 0804 merupakan ADC 8-bit yang
keluaran digitalnya dibagi atas 256 nilai yaitu 0 sampai 255, dimana besar step size
ditentukan level tegangan masukan Vref/2. Agar perubahan temperatur 1 (satu) derajat dapat
dideteksi sensor LM35 maka besar step size ADC adalah 10mV/step. Untuk mendapatkan
nilai step-size 10mV maka diperlukan besar tegangan masukan pada Vref/2 sebesar:
Vref/2=(10mVx256)/2=1280 mV atau 1,28Volt.
Dengan demikian bila temperatur ruangan sebesar 35ºC maka tegangan keluaran sensor
sebesar 35x10mV =350mV dan nilai digital yang dihasilkan ADC adalah 350mV/10mV=3510
atau 23H.
Tahapan untuk mengkonversi tegangan analog menjadi data digital adalah sebagai
berikut :
1. Sinyal WR rendah ([P3.6] = 0)
2. Delay Sesaat
3. Sinyal WR tinggi ([P3.6] = 1)
4. Periksa INTR (P3.2)
5. Jika INTR logic 1 , ulangi langkah 4 (tunggu hingga [P3.2] = 0)
6. Berikan sinyal RD = 0 ([P3.7] = 0)
7. Baca data (P1.0…….P1.7)
8. Sinyal RD = 1 ([P3.7] = 1)
Untuk melaksanakan tahapan di atas diperlukan sebuah mikrokontroller, dimana hasil
pengkonversian (pengubahan keluaran sensor menjadi data digital) diproses mikrokontroller
dan diberikan ke Modem GSM untuk dikirimkan ke ponsel penerima melalui SMS.

5. Rangkaian Driver Kipas angin


Keluaran mikrokontroler berupa tegangan TTL yaitu 0 atau 5V, sedangkan suplay
Kipas angin adalah 220Vac. Agar mikrokontroler dapat mengendalikan kipas angin maka
diperlukan rangkaian driver yang mengubah tegangan +5V (logika 1) ke tegangan 220Vac.
Rangkaian driver kipas angin 220Vac terdiri dari optocoupler 4N25 dan Rangkaian relay
seperti ditunjukkan pada gambar 5. Rangkaian optocoupler 4N25 berfungsi agar
mikrokontroller terisolasi dari tegangan 220Vac dimana hubungan rangkaian mikrokontroller
dengan relay melalui cahaya.
Pada saat keluaran mikrokontroler P2.0 logika 0 akan membuat arus mengalir pada
LED dari 4N25 dan membuat LED menghasilkan cahaya yang mengakibatkan transistor
photo dari 4N25 saturasi dengan tegangan pada kolektor sekitar 0,3 volt. Tegangan sebesar
0,3volt pada masukan basis transistor BC547 akan membuat transitor tersebut cut-off.
Transistor BC547 keadaan cut-off membuat arus ke relay terputus dan mengakibatkan relay
off. Relay off membuat tegangan 220Vac ke kipas angin teroutus dan kipas angin OFF
(padam).
+9V

NO
NC

Relay
7
+5V +9V 220 Vac

2K
220
Kipas Angin
BC 220Vac
1 5
547

4N25

2 4
P2.0
Gambar 3. Rangkaian On/Off Kipas Angin
Pada saat keluaran mikrokontroler P2.0 logika 1 akan membuat arus tidak
mengalir pada LED optocoupler 4N25 dan LED tersebut tidak menghasilkan cahaya. Dengan
tidak adanya cahaya diterima Transistor photo akan membuat transitor photo tersebut cut-off
yang menghasilkan tegangan pada kolektor mendekati tegangan +9volt. Dengan tegangan
sekitar +9V pada masukan basis transistor BC547 membuat transistor tersebut saturasi.
Transistor BC547 saturasi mengakibatkan arus mengalir pada coil relay dan akibatnya kontak
relay ditarik dan membuat kipas angin terhubung ke sumber tegangan 220Vac dan kipas
angin bekerja.

6. Rangkaian Driver Alaram


Untuk memberi peringatan pada penghuni rumah/ruangan digunakan buzzer. Jika
mikrokontroler mendeteksi ada temperatur diruangan maka mikrokontroler akan
mengaktifkan driver alaram sehingga buzzer bunyi. Masukan buzzer merupakan tegangan
+12V. Karena arus dan tegangan keluaran mikrokontroler tidak cukup membuat alaram
bunyi maka diperlukan driver. Pada penelitian ini rangkaian alaram terdiri buzzer dan
rangkaian relay seperti ditunjukkan pada gambar 6.
+9V

NO
NC

Relay 9V

+5V +9V

2K Alaram
220

BC
1 5 547

4N25

2 4
P2.1
Gambar 6. Rangkaian Alaram

Pada saat keluaran mikrokontroller P2.1 logika “0” masukan katoda dari LED
optocoupler 4N25 mendapat tegangan rendah (0,2V) dengan demikian LED menyala (karena
tegangan VAK cukup membuat forward) dan membuat transitornya saturasi dan akibatnya
transistor BC547 cut-off. Transistor BC547 cut-off membuat arus tidak mengalir ke relay
dan relay OFF sehingga alaram OFF.
Saat keluaran mikrokontroler P2.1 logika 1 (+4,5V) membuat perbedaan tegangan
pada Anoda-Katoda LED optocoupler 4N25 tidak cukup membuat LED forward. Dengan
demikian Transistor dari 4N25 cut-off dan menghasilkan tegangan pada basis transistor
BC547 mendekati +9V dimana tegangan ini cukup membuat transistor BC547 ON (saturasi).
Transistor BC547 ON membuat arus dapat mengalir pada relay dan mengakibatkan relay
menarik kontaknya sehingga alaram terhubung ke sumber tegangan +9V dan menghasilkan
bunyi.

7. Instalasi Modem Wavecom Fastrack M1306B

Perancangan alat pendeteksi ini menggunakan sebuah modem Wavecom Fastrack


M1306B yang digunakan sebagai media pengiriman SMS peringatan kepada ponsel pemilik.
Modem ini dilengkapi dengan kabel RS-232 konektor 15 pin ke konektor 9 pin sehingga
dapat dihubungkan langsung ke perangkat yang mempunyai interface RS-232 DB-9 seperti
ditunjukkan pada gambar 7. Pada perancangan ini sistem mikrokontroller mempunyai
interface serial RS-232 dengan MAX-232, sehingga sistem mikrokontroler dapat
dihubungkan langsung ke Modem Wavecom.

Gambar 7. Kabel dan konektor Modem wavecom

8. Perancangan Perangkat Lunak


Agar mirokontroler dapat bekerja maka pada mikrokontroler harus dimasukkan
program atau diprogram. Untuk memprogram mikrokontroler diperlukan sebuah down
loader beserta programmnya. Adapun langkah kerja mikrokontroler untuk mamantau
temperatur dalam rumah melalui SMS digambarkan pada gambar 8.
Pertama sekali mikrokontroler menginisialisasi unit serialnya sehingga dapat
berkomunikasi serial dengan parameter sebagai berikut:
-Kecepatan 19200 bps
-Panjang karakter 8-bit
-Tanpa paritas
-Satu bit stop

Mulai

Inisialisasi Serial Interface

Baca Sensor Temperatur

Periksa Level Temperatur

Ya
= < Max
?
Tdk

Aktifkan Kipas Kipas OFF

Aktifkan Alaram Alaram OFF

Kirimkan SMS Kondisi Temperatur

Selesai
Gambar 8. Diagram alir Pendeteksian dan Penetralan Temperatur
Setelah inisialisasi selanjutnya mikrokontroler membaca level temperatur melalui
pembacaan keluaran ADC 0804. Agar ADC0804 dapat mengkonversi keluaran sensor
temperatur yang berupa analog ke bentuk digital maka mikrokontroller terlebih dahulu
mengaktivkan ADC 0804 dengan memberikan sinyal WR. Setelah keluaran INTR ADC0804
logika 0 mikrokontroller membaca keluaran ADC0804 yang merupakan nilai digital dari
level temperatur dalam ruangan. Selanjutnya mikrokontroler membandingkan level
temperatur hasil pembacaan dengan nilai set- up (maksimum). Jika level yang dibaca lebih
besar dari nilai setup mikrokontroler akan mengaktifkan Kipas angindan membunyikan
Alaram dan selanjutnya mikrokontroler mengirimkan pesan melalui SMS ke ponsel pemilik.
Isi pesan SMS yang dikirimkan adalah level temperatur ruangan dan pesan peringatan.

9. Perancangan Program
Program pendeteksi temperature yang dirancang terdiri atas beberapa bagian yang
dimulai dari inisialisasi serial dan timer, membaca temperature (ADC0804), Kirim SMS.
a. Sub-rutin Inisialisasi
Pada penelitian ini komunikasi serial antara modem dan mikrokontroler diset pada
kecepatan 19200bps untuk itu timer TH1 diset dengan data FDH dengan modus 2,
SMOD=1. Implementasi dalam bahasa pemograman assembler ditunjukkan pada program
1.

Program1. Sub-routine Inisialisasi


INIT_SERIAL:MOV PCON ,#80H ;SMOD=1
MOV TH1,#0FDH ; 19.200 Baudrate
MOV TCON,#40H ; T1 On, T0 Off
MOV SCON,#52H ; Mode 1 Ren
MOV TMOD,#20H ; T1 Mode 2
RET

b. Sub-rutin Membaca Temperatur


Pembacaan temperature dilakukan dengan mengatifkan ADC0804 dengan
memberikan sinyal WR dengan logika 0 sesaat dan kemudian menunggu hingga sinyal
keluaran INTR logika 0. Kemudian memberikan logika 0 pada masukan RD selanjutnya
membaca data digital hasil konversi dari Port P2 mikrokontroler.

Program 2. Sub_routine_Baca_ADC
Baca_ADC: SetB P3.6 ; WR =1
Acall Delay_5mS
Clr P3.6 ; WR =0
SetB P3.7 ;RD=1
Acall Delay_5mS
SETB P3.6 ; WR =1
INT: JB P3.2,INT ;Tunggu hingga logika 0
CLR P3.7 ;Sinyal RD=0
Acall Delay_5mS
MOV A,P1 ;Baca data Digital
MOV 36H,A ;Simpan hasil pembacaan
RET
c. Koneksi dengan Modem
Sebelum digunakan mengirim SMS terlebih dahulu koneksi Modem diuji dengan
memberikan perintah AT-Command. Jika hubungan benar maka jawaban modem adalah
>OK. Untuk memudahkan dalam pemograman modem diset dalam mode teks dengan
memberikan perintah AT+CMGF=1. Agar tidak terjadi ECHO maka dikirim ATE0.
Untuk menset modem dapat dilakukan melalui TeraTerm sbb:

1. Mengirimkan perintah AT (untuk memeriksa apakah Modem Respon)


2. Menunggu tanda “OK”
3. Mengirim AT+CMGF=1 (agar pengiriman pada mode teks)
4. Mengirimkan perintah ATE0 Agar ECHO OFF)
5. Mengirim perintah AT+IPR=19200 (mengatur kecepatan 19200)
Kemudian ubah kecepatan serial komputer ke 19.200 bps melalui Control Panel.

Program Pemantau Temperatur Melalui SMS

;Program Pemantau Temperatur Melalui SMS


;Nomor ponsel pemantau +62819875620
;setiap pesan diakhiri 0FFH
;Sensor temperatur terhubung ke ADC dengan hubungan sbb:
;WR P3.6
;RD P3.7
;INTR P3.2
;Data P1
;Utk Chanel 0: P0.5=0 P0.6=0 P0.7=0
;
; P2.7 =LED ON/OFF
; P2.0 =Kipas Aktif Logika 1
; P2.1 =Alaram Aktif logika 1

ORG 00
SJMP Mulai
;
ORG 30H
Mulai: CLR P2.0 ;Kipas off
SETB P2.1 ;alaram On
MOV 36H,#00 ;mengisikan memori Hasil baca 00
ACALL Init_Serial ;Inisial Serial
ACALL Delay_500Ms
CLR P2.1 ;Alarm OFF
ULANG: CPL P2.7 ;Led ON/OFF
CALL Delay_500mS
CALL Baca_ADC
CALL BCD ;Ubah ke BCD dan ASCII
MOV A,36H ;Baca Nilai Temperatur (Hexa)
CLR C
SUBB A,#3CH ;Periksa apakah level Bahaya>60 oC
JC PANAS
SETB P2.0 ;Kipas on
SETB P2.1 ;Alaram ON
CALL SMS1 ;Kirim SMS "AWAS Kebakaran Ruangan Sangat Panas"
JMP AKHIR

PANAS: MOV A,36H


CLR C
SUBB A,#32H ;Periksa apakah Sangat Panas>50 oC
JC SEDANG
SETB P2.0 ;Kipas ON
SETB P2.1 ;Alaram ON
CALL SMS2 ;Kirim SMS " Ruangan Sangat Panas"
JMP AKHIR

SEDANG: MOV A,36H


CLR C
SUBB A,#28H ;Periksa apakah level Panas>40 Oc
JC NORMAL
SETB P2.0 ;Kipas ON
SETB P2.1 ;Alaram ON
CALL SMS3 ;Kirim SMS "Ruangan Panas"
JMP AKHIR

NORMAL: MOV A,36H


CLR C
SUBB A,#1EH ;Periksa apakah level SEDANG >30 oC
JC DINGIN
SETB P2.0 ;Kipas ON
CLR P2.1 ;Alaram OFF
JMP AKHIR

DINGIN: CLR P2.0 ;Kipas OFF


CLR P2.1 ;Alaram OFF
AKHIR: call Delay_5S
call Delay_5S
SJMP ULANG

SMS1: CALL SMS_NOMOR


CALL ENTER
CALL SMS_DATA1
CALL SMS_DATA4
CALL SMS_NILAI
CALL CTRL_Z
CALL Delay_1MNT
RET

SMS2: CALL SMS_NOMOR


CALL ENTER
CALL SMS_DATA2
CALL SMS_DATA4
CALL SMS_NILAI
CALL ENTER
CALL CTRL_Z
CALL Delay_1MNT
RET

SMS3: CALL SMS_NOMOR


CALL ENTER
CALL SMS_DATA3
CALL SMS_DATA4
CALL SMS_NILAI
CALL ENTER
CALL CTRL_Z
CALL Delay_1MNT
RET

SMS_NOMOR:mov dptr,#NOMOR ; tandai Alamat nomor yang dituju


Mov r2,#0
send_again1a: mov a,r2
movc a,@a+DPTR
cjne a,#0ffh,write1a
Acall Delay_500mS
CALL ENTER
Acall Delay_500mS
RET

write1a: mov sbuf,a


jnb ti,$
CLR TI ;Clear indikasi
inc r2
jmp send_again1a

NOMOR: db 'AT+CMGS=+62819875620',0ffh
ENTER: mov sbuf,#13
jnb ti,$
CLR TI ;Clear indikasi
RET

SMS_DATA1:CALL Delay_500mS
Mov dptr,#DATA1 ;tandai tempat pesan 1 yang akan dikirimkan
mov r2,#0
CALL KIRIM_SMS
RET

SMS_DATA2:CALL Delay_500mS
Mov dptr,#DATA2 ;tandai pesan 2 yang akan dikirimkan
mov r2,#0
CALL KIRIM_SMS
RET
SMS_DATA3:CALL Delay_500mS
Mov dptr,#DATA3 ;tandai pesan 3 yang akan dikirimkan
Mov r2,#0
CALL KIRIM_SMS
RET

SMS_DATA4:CALL Delay_500mS
Mov dptr,#DATA4 ;tandai pesan 4 yang akan dikirimkan
Mov r2,#0
CALL KIRIM_SMS
RET

DATA1:db ' AWAS KEBAKARAN RUANGAN SANGAT PANAS',13,10,0ffh


DATA2: db ' RUANGAN SANGAT PANAS',13,10,0ffh
DATA3:db ' RUANGAN PANAS',13,10,0ffh
DATA4: db ' LEVEL TEMPERATUR',13,10,0ffh

KIRIM_SMS: Mov a,r2


movc a,@a+DPTR
cjne a,#0ffh,write2
Acall Delay_500mS
CALL ENTER
Acall Delay_500mS
RET

write2: mov sbuf,a ;proses pengiriman serial data diatas


jnb ti,$
CLR TI ;Clear indikasi
inc r2
jmp KIRIM_SMS

CTRL_Z: CALL Delay_500mS


Mov sbuf,#26 ;Ctrl z
jnb ti,$
CLR TI ;Clear indikasi
Acall Delay_500mS
CALL ENTER
RET

SMS_NILAI: MOV R0,#41H ;Set alamat Nilai ASCII Temp


KIRIM_NIL: MOV A,@R0 ;Baca nilai
CLR TI ;Clr indikasi TI
MOV SBUF,A ;Kirim
JNB TI,$ ;Tunggu hingga siap mengirim
INC R0 ;Kurangi alamat untuk puluhan dan satuan
CJNE R0,#44H,KIRIM_NIL ;Ulangi hingga satuan dikirim
MOV A,#13 ;Kirim Enter
CLR TI ;
MOV SBUF,A
JNB TI,$
MOV A,#10 ;Kirim Line feed
CLR TI ;
MOV SBUF,A
RET

Init_Serial: MOV PCON,#80H ; SMOD=1


MOV TH1,#0FDH ; 19.200 Baudrate
MOV TCON,#40H ; T1 On, T0 Off
MOV SCON,#52H ; Mode 1 Ren
MOV TMOD,#20H ; T1 Mode 2
RET
Baca_ADC:
SetB P3.6 ; WR =1
SetB P3.7 ; RD=1
Acall Delay_5mS
Clr P3.6 ; WR =0
Acall Delay_5mS
SETB P3.6 ; WR =1
INT: JB P3.2,INT
CLR P3.7
MOV A,P1
MOV 36H,A ;Simpan hasil pembacaan
RET

BCD: MOV A,36H


MOV B,#10
MOV R0,#43H
DIV AB
MOV @R0,B ; (43H): SATUAN
DEC R0
MOV B,#10
DIV AB
MOV @R0,B ; (42H): PULUHAN
DEC R0
MOV @R0,A ; (41H): RATUSAN
MOV A,41H
ADD A,#30H ;Ubah ke ASCII
MOV 41H,A
MOV A,42H
ADD A,#30H
MOV 42H,A
MOV A,43H
ADD A,#30H
MOV 43H,A
RET
Delay_1MNT: Mov R5,#60
Tung1MNT: CPL P2.7 ;Led nyala/padam
Acall Delay_1S
Djnz R5 ,Tung1MNT
Ret

Delay_5S: Mov R5,#05


Tung5dtk: CPL P2.7 ;Led nyala/padam
Acall Delay_1S
Djnz R5,Tung5dtk
Ret

Delay_1S: Mov R4,#200


Tunggu_1detik:Acall Delay_5mS
Djnz R4,Tunggu_1detik
Ret

Delay_500mS:Mov R4,#100
Tunggu_500mdetik:
Acall Delay_5mS
Djnz R4,Tunggu_500mdetik
Ret

Delay_100mS:Mov R4,#20
Tunggu_100mdetik:
Acall Delay_5mS
Djnz R4,Tunggu_100mdetik
Ret

Delay_50mS: Mov R4,#10


Tunggu_50mdetik:Acall Delay_5mS
Djnz R4,Tunggu_50mdetik
Ret

Delay_5mS: Push TMOD


Mov TMOD,#21H
Mov TH0,#0EDH
Mov TL0,#0FFH
Setb TR0
Tunggu_5mS: Jbc TF0,Sudah_5mS
Ajmp Tunggu_5mS
Sudah_5mS: Clr TR0
Pop TMOD
Ret
END