Wednesday, 7 December 2011

SELAMAT DATANG DI BLOG ADRI ELECTRONIC


Blog ini Berisikan tentang artikel-artikel Elektronika , seperti rangkaian elektronik, artikel, blog ini menyedikan khusus elektronika Analog dan Digital.

Blog ini saya post hasil dari pengalaman saya saat membuat alat yang sudah saya kerjakan dan hasilnya befungsi dengan baik.

selamat membaca dan semoga bermanfaat.


Baca Juga :

1. Rangkaian Temperature Control
2. Power Supply
3. Pengenalan RTC (Real Time Clock)
4. Digital Stop Watch

5. Teknik interfaceing dengan menggunakan bahasa pascal

New Project Update

1. Cara Membuat Transformator (Trafo) Step Down

Produk Adri Electronic Analog
1. Power Supply Dual Channel Voltage 2A
2. Emergency Light


Untuk pemesanan alat dan program hubungi (022)-955995952 






Monday, 5 December 2011

Rangkaian Emergency Light (lampu Darurat)



Silahkan Klik Gambar untuk memperbesar

Rangkaian diatas ini merupakan rangkaian emergency light (lampu darurat), yang hanya menggunakan lampu LED (light Emitting Diode) , tidak perlu menggunakan (floresent lamp) , pada rangkaian diatas berfungsi untuk lampu penerangan apabila sedang terjadi padam lampu . perinsip rangkain ini adalah memanfaat transistor untuk proses switching , juga pada rangkaian ini dapat bekerja apabila kita berikan batterai sebagai catu daya untuk menjalan lampu led.

rangkaian diatas sudah pernah saya buat pada pembuatan tugas IP (Individual Project) di sekolah, dan hasilnya 100% berfungsi. adapun daftar komponen bagi yang ingin membuat alat ini :

1. Transformator 500 mA
2. Dioda D1-D4 : 1N4007
3. Capasitor Elco C1 : 1000 uf 16v
4. Trimpot / Potensiometer : RV1 : 2.2K ohm
5. Resistor R1 :180 Ohm
6. IC Regulator LM317 :U1
7. LED 12 pcs
8. Transistor BC547
9. Resistor 15 Ohm 5Watt
10 Transistor BD140
11. Resistor 100 Ohm (12 pcs)
12. Dioda Zener 6.8v 0.5w
13. Batterei 6v

Rangkaian Power Supply LM317 & LM337




Klik Gambar untuk memperbesar

Ini adalah Rangkaian pencatu daya (Power Supply) dual polaritas, yang didalam nya menggunakan 2 buah IC Regualator LM 317 dan LM 317
IC Regulator LM 317 ini digunakan untuk membatasi /pengregulasi an tegangan pada polaritas positive , sehingga output yang diberikan dapat stabil pada tegangan referensi tertentu, dan mampu menghasilkan arus 1,5 A dan dengan tegangan mulai +1,2v hingga +30V.
sedangkan IC Regulator LM 335 ini digunakan untuk membatasi/ pengregulasian tegangan berpolaritas negativ , sehingga output yang dihasilkan dari IC LM337 ini dapat stabil tegangan keluarannya. berdasarkan pengaturan referensi nya.

pada rangkaian power supply diatas dapat menghasilkan output adjustable ganda (20V,0V,20V).

catatan:
1. Transformator CT 2A (18,CT,18)
2. Resistor R1 dan R2 menggunakan 220 Ohm

Daftar Komponen
1. Transformator 2A (18,CT,18)
2. D1-D4 : Dioda 1N4007
3. C1,C2 : Capasitor Elco 2200uf 25v
4. C3,C4 : Capasitor Elco 100uf 25v
5. C5,C6 : Capasitor Elco 2.2uf 25v
6. C7,C8 : Capasitor Elco 470uf 25v
7. IC Regulator LM317 : U1
8. IC Regulator LM337 : U2
9. Resitor 220 ohm : R1 & R2
10. Potensiometer 5k Ohm :RV1 & RV2

anda belum mempunya data sheet IC nya ?
silahkan anda download di bawah ini
1. IC LM317
2. IC LM337

Thursday, 10 November 2011

Teknik Membuat Trafo Step Down

Taukah anda Tranformator ?
Transformator atau sering banyak yang menyebutkan trafo, pada trafo berdasarkan cara kerjanya dibagi menjadi 2 diantaranya :

1. Trafo Step Down
pada trafo Step Down berfungsi sebagai penurun tegangan dari tegangan tinggi menjadi tegangan rendah. ciri-ciri Trafo Step Down diantranya: jumlah lilitan (n) pada primer lebih banyak dibandingkan jumlah lilitan (n) pada bagian Skunder .

berikut ini merupakan gambar simbol dari trafo step down. silahkah klik untuk memperbesar.


2. Trafo Step Up
Pada trafo Step Up Berfungsi sebagai penaik tegangan dari tegangan kecil menjadi tegangan tinggi . ciri ciri trafo Step up adalah kebalikan dari Step Down . pada Step Up banyak lilitan paaprimer lebih sedikit dibandingkan jumlah lilitan (n) pada bagian skunder.


Berikut merupakan gambar simbol dari trafo step up , silahkan klik gambar untuk memperbesar.



komponen apa saja sih yang di gunakan untuk membuat trafo step down ??
jawab :
komponen yang digunakan untuk membuat trafo step down diantaranya sebagai berikut :
a. Kawat Tembaga (Kawat Email)
b. Koker (Tempat lilitan ,biasanya bahan plastik)
c. Kern (Inti besi )



lalu bagaiamana bentuk alat untuk melilit transformator ??


Monday, 16 May 2011

PENDITEKSI PUTARAN

Many thing in our daily need that can be easily by implement a simple applied technology. So our life become easy and comfort. We can make anything work automatic, or work without our intervention so if we forget to run it, or to turn off it, they will be done by their shelf.

By a simple applied technology, such as electronics, we can solve many simple problem as mentioned above. With the small dimension of electronic component and small power too, we can realize our need, such as automatic lamp, remote controller, water tank level controller.

Beside all that mention above, we can make many device that valuable to our need, such as decorative lamp, amplifier, detector etc. The simple applied electronic circuits are divided in to two groups, analog and digital circuitry.

Analog electronic circuits are those in which signals may vary continuously with time to correspond to the information being represented. Electronic equipment like voltage amplifiers, power amplifiers, tuning circuits, radios, and televisions are largely analog (with the exception of their control sections, which may be digital, especially in modern units).

In digital electronic circuits, electric signals take on discrete values, which are not dependent upon time, to represent logical and numeric values. These values represent the information that is being processed. The transistor is one of the primary components used in discrete circuits, and combinations of these can be used to create logic gates. These logic gates may then be used in combination to create a desired output from an input. In this page you can find one of the circuit.

Detektor Arah Putaran Menggunakan D Flip-flop

Dengan menyusun piranti piringan bercelah yang dihubungkan dengan poros putaran (seperti terlihat dalam Gambar 1), yang dipasangkan dengan dua buah opto-coupler maka dapat diperoleh detektor arah putaran benda kerja (misalnya putaran motor).

Gambar 1. Piringan untuk mendeteksi arah putaran menggunakan opto coupler.

Karena terdapat celah pada piringan, maka sinyal yang keluar dari rangkaian opto-coupler ada;ah seperti pada Gambar 2. Dengan posisi opto-coupler yang saling berdampingan, maka sinyal opto-coupler A dan B akan memiliki beda fasa. Dengan beda fasa seperti itu, maka jika sinyal tersebut disambungkan ke D flip-flop (seperti pada Gambar 3) maka arah putaran akan dapat terdeteksi, yaitu seperti terlihat pada tabel di Gambar 3.

Gambar 2. Pulsa keluaran opto-coupler.

Gambar 3. D flip-flop untuk menenentukan arah putaran.


Monday, 18 April 2011

Digital Stop Watch

Hello Friends,

In this tutorial we will make a "Digital Stop Watch" using an AVR ATmega8 Microcontroller. This will help you learn many concepts like

  1. Multiplexed Seven Segment Display Interfacing
  2. Using AVR Timers
  3. Using Interrupts
  4. And many others too.

The code is written in C language for avr-gcc (WinAVR) .

digital stop watch using avr atmega8 and seven segment displays

Fig.: Digital Stop Watch Prototype


Steps to Build the "Digital Stop Watch" using AVR ATmega8 MCU

  1. Make the circuit according to the schematic on general purpose PCB or a BreadBoard.
  2. Make a project in AVR Studio and add a new file to the project. Copy/paste the "c" code. Set optimization as "o2" and CPU frequency as 16000000Hz. Save and Build the project. You will get a HEX file.
  3. Burn this HEX file to an ATmega8 MCU using a tool such as eXtreme Burner AVR.
  4. Set High Fuse = C9(Hex) Low Fuse = FF(Hex). How to do this depends on you programmer software.

I have use a xBoard MINI development board for fast and easy prototyping. The Displays+Transistors+Key are on the Veroboard while the Core CPU unit + power supply is in the xBoard MINI. It can be programmed "In System" over USB Port using eXtreme Burner - AVR software toolkit.

digital stop watch circuit

Fig.: Digital Stop Watch made using xBoard MINI

How to Use the "Digital Stop Watch"

When initially powered up the Stop watch is in "STOP" condition. This is indicated by a blinking display. The count is 00:00 initially. Press "START" to start the watch. The blinking will now stop and the display will be fully on. It will start counting and MIN:SEC is displayed. The stop watch can be halted at any time by pressing "HALT" key. In halt state the counting freezes and the display starts blinking. You can press "START' key again to resume counting from there. The "RESET" key is used to reset the clock to 00:00 i.e. 0 minute and 0 sec.

Digital Stop Watch Schematic

Fig.: Digital Stop Watch Schematic

Digital Stop Watch C Source Code.


/*

Description: An AVR ATmega8 based Digital Stop Watch

Project.
________________________________________________________

Author: Avinash Gupta
Date: 04 July 09
Web www.eXtremeElectronics.co.in


*/

#include
#include
#include

#define true 1
#define false 0

#define SEVEN_SEGMENT_PORT PORTD

#define SEVEN_SEGMENT_DDR DDRD

volatile uint8_t digits[4];

//Global variable for the clock system
volatile unsigned int clock_millisecond=0;
volatile unsigned char clock_second=0;

volatile unsigned char clock_minute=0;
volatile unsigned char clock_hour=0;

//Display hiding system
uint8_t hide_display = false;

//Blinking system

uint8_t blink_display = true;



void SevenSegment(uint8_t n,uint8_t dp)
{
/*
This function writes a digits given by n to the display
the decimal point is displayed if dp=1

Note:
n must be less than 9

*/
if(n<11)
{
switch (n)
{
case 0:
SEVEN_SEGMENT_PORT=0b00000011;
break;

case 1:
SEVEN_SEGMENT_PORT=0b10011111;
break;

case 2:
SEVEN_SEGMENT_PORT=0b00100101;
break;

case 3:
SEVEN_SEGMENT_PORT=0b00001101;
break;

case 4:
SEVEN_SEGMENT_PORT=0b10011001;
break;

case 5:
SEVEN_SEGMENT_PORT=0b01001001;
break;

case 6:
SEVEN_SEGMENT_PORT=0b01000001;
break;

case 7:
SEVEN_SEGMENT_PORT=0b00011111;
break;

case 8:
SEVEN_SEGMENT_PORT=0b00000001;
break;

case 9:
SEVEN_SEGMENT_PORT=0b00001001;
break;

case 10:
//A BLANK DISPLAY

SEVEN_SEGMENT_PORT=0b11111111;
break;

}
if(dp)
{
//if decimal point should be displayed
//make 0th bit Low
SEVEN_SEGMENT_PORT&=0b11111110;
}
}
else

{
//This symbol on display tells that n was greater than 10
//so display can't handle it
SEVEN_SEGMENT_PORT=0b11111101;
}
}

void Wait()
{
uint8_t i;
for(i=0;i<10;i++)
{
_delay_loop_2(0);
}
}


void Print(uint16_t num)
{
/*

This function breaks apart a given integer into separete digits
and writes them to the display array i.e. digits[]

*/

uint8_t i=0;
uint8_t j;
if(num>9999) return;


while(num)
{
digits[i]=num%10;
i++;

num=num/10;
}

//Fill with leading 0s

for(j=i;j<4;j++) digits[j]=0;
}




void main()
{
uint16_t i;

// Prescaler = FCPU/1024
TCCR0|=(1<//Enable Overflow Interrupt Enable

TIMSK|=(1<//Initialize Counter
TCNT0=0;

//Port c[3,2,1,0] as out put
DDRC|=0b00001111;

PORTC=0b00001110;

//Port D

SEVEN_SEGMENT_DDR=0XFF;

//Turn off all segments
SEVEN_SEGMENT_PORT=0XFF;

//Set up the timer1 as described in the
//tutorial
//TCCR1B=(1<<<

//initailly stop the timer by setting clock source =000
TCCR1B&=(~((1<1<1<250
;

//Enable the Output Compare A interrupt
TIMSK|=(1<//Enable interrupts globally

sei();

//Continuasly display the time
while(1)
{
int disp;
disp=(clock_hour*100)+clock_minute;
//disp=(clock_minute*100)+clock_second;

Print(disp);

if(!(PINB & (1<//RESET PRESSED
clock_millisecond=0;
clock_second=0;
clock_minute=0;
clock_hour=0;
}

if(!(PINB & (1<//halt pressed

//stop the timer
TCCR1B&=(~((1<1<1<//Start blinking the display
blink_display=true;
}

if(!(PINB & (1<//start pressed

//start the timer
//Set up the timer1 as described in the
//tutorial
TCCR1B=(1<1<1<//Stop blinking the display

blink_display=false;

//Show the display
hide_display=false;
}

_delay_loop_2(0);
_delay_loop_2(0);

}


}

ISR(TIMER0_OVF_vect)
{


/*

This interrup service routine (ISR)
Updates the displays

*/
static uint8_t i=0;

if(i==3)
{
//If on last display then come

//back to first.
i=0;
}
else
{
//Goto Next display
i++;
}

//Acivate a display according to i

PORTC=~(1<if(hide_display)
{
//Show a blank display
SevenSegment(10,0);

}
else
{
//Write the digit[i] in the ith display.

SevenSegment(digits[i],0);
}

//Handle blinking

if(!blink_display) return;

static uint8_t blink_counter=0;

blink_counter++;
if(blink_counter == 16)
{
blink_counter =0;

hide_display=!hide_display;
}

}


//The output compate interrupt handler
//We set up the timer in such a way that
//this ISR is called exactly at 1ms interval
ISR(TIMER1_COMPA_vect)
{
clock_millisecond++;
if(clock_millisecond==1000)
{
clock_second++;
clock_millisecond=0;
if(clock_second==60)
{
clock_minute++;
clock_second=0;
}
if(clock_minute==60)
{
clock_hour++;
clock_minute=0;
}
}
}


Friday, 15 April 2011

Pengenalan RTC (Real Time Clock)

Prinsip Kerja Alat

Prinsip kerja alat Alarm Pengingat Waktu Minum Obat Menggunakan RTC DS12C887 Berbasis Mikrokontroler AT89S52 ini adalah mikrokontroler sebagai bagian pemroses selalu melihat keadaan 4 ruangan memori pada memori RTC yang mewakili 4 jenis obat, pada tiap ruangan ini berisi 4 buah jadwal alarm yaitu.

  1. Alarm obat 1×1 sehari.
  2. Alarm obat 1×2 sehari.
  3. Alarm obat 1×3 sehari.
  4. Alarm obat 1×4 sehari.

Pada bagian pengaturan dapat memilih jenis obat mana yang akan diaktifkan dan juga memilih jadwal alarm obat dari ke empat pilihan dalam sehari. Sedangkan untuk 4 waktu bunyi alarm telah ditentukan melalui pemrograman flash PEROM mikrokontroler sehingga pengguna tidak dapat mengubahnya kecuali lewat pemrograman IC mikrokontroler. Empat waktu yang telah diisikan ke dalam memori IC mikrokontroler tersebut adalah sebagai berikut.

  1. 1×1 pada pukul 08.00
  2. 1×2 pada pukul 14.00
  3. 1×3 pada pukul 20.00
  4. 1×4 pada pukul 02.00

Berikut ini adalah Gambar 4.1 alat Alarm Pengingat Waktu Minum Obat Menggunakan RTC DS12C887 Berbasis Mikrokontroler AT89S52 yang selesai dirakit.

IC Pewaktu RTC DS12C887

Real Time Clock atau biasa disebut dengan RTC adalah sebuah komponen elektronik yang didalamnya berisi jam elektronik yang tidak pernah berhenti bekerja kecuali register diisi kode OFF. Komponen ini menyimpan waktu mulai dari detik hingga tahun, dan selalu diperbaharui setiap saat secara otomatis, nilai informasi waktu disimpan di dalam sebuah RAM dengan alamat yang telah ditentukan. Karena disimpan di dalam sebuah RAM dengan alamat yang sudah ditentukan, maka pengguna dapat mengambil datanya dengan sebuah mikrokontroler, dan hubungannya dengan mikrokontroler sebagai komponen memori eksternal. Jadi dalam hal ini mengakses data memori eksternal dan mengakses data RTC adalah sama caranya. Berikut ini adalah Gambar 3.2 menyambungkan RTC ke mikrokontroler.

Gambar 3.2 Menyambungkan RTC ke port mikrokontroler

Di samping itu karena data waktu yang disimpan tidak banyak, maka sisa ruang memori yang disediakan RTC, bisa digunakan untuk menyimpan data secara aman, data tersebut tidak akan hilang meskipun catu daya dimatikan sampai jangka waktu sekitar 10 tahun (seumur baterai yang ada di dalam RTC).

Sistem Minimum Mikrokontroler AT89S52

Mikrokontroler merupakan komponen utama yang mengendalikan seluruh sistem. Mikrokontroler yang digunakan pada penelitian ini adalah mikrokontroler keluaran Atmel dengan seri AT89S52. Seri ini merupakan varian baru dari keluarga AT89C51 yang mengalami perubahan prosedur pengisian program. Pada seri ini memiliki fasilitas ISP (In System Programming) yang tidak dimiliki pada seri sebelumnya. Fasilitas ini memungkinkan pengubahan isi program walaupun sistem sedang berjalan. Pada penelitian ini sistem minimum disajikan pada Gambar 3.3.

Tombol Masukan

Tombol masukan ini terdiri dari 4 buah tombol (push on) yang dihubungkan ke port 3.0 – port 3.3 mikrokontroler. Ke-empat tombol ini akan mewakili tombol MENU, tombol UP, tombol DOWN, dan tombol NEXT. Tombol – tombol ini akan berfungsi saat setting jam, hari, tanggal, bulan, dan tahun pada RTC. Juga akan berfungsi pada saat pengisian waktu membunyikan alarm minum obat pada setiap harinya. Berikut ini adalah Gambar 3.4 penyambungan tombol ke port mikrokontroler.

Penampil LCD

LCD merupakan penampil yang digunakan untuk memberikan informasi bagi pengguna alat. LCD ada yang mempunyai satu baris dan ada yang dua baris, LCD satu baris disebut LCD 1 x 16 dan LCD dua baris biasa disebut LCD 2 x 16, 16 menunjukkan banyaknya karakter yang dapat ditampilkan dalam setiap baris. Pada sistem ini digunakan sebagai penampil waktu normal dan waktu pengaturan bunyi alarm pada setiap harinya.

Pada Gambar 3.5 merupakan antarmuka LCD 2×16 dengan menggunakan mode antarmuka 8 bit. Berikut beberapa hal yang perlu diperhatikan adalah LCD selalu berada pada kondisi tulis (write), dengan menghubungkan pin R/W ke Ground. Hal ini dimaksudkan agar LCD tersebut tidak pernah mengeluarkan data (kondisi baca) yang mana data tersebut akan bertabrakan dengan data komponen lain di jalur bus.


Rangkaian Penggerak Speaker

Rangkaian penggerak speaker menggunakan transistor jenis PNP (A733), pada dasarnya speaker dihubungkan ke tegangan Vcc (dengan batasan arus oleh resistor 47 Ω). Karena adanya transistor, maka speaker mendapatkan arus atau tidaknya tergantung dari kondisi transistor saat itu. Jika transistor ON (karena ada arus low pada basis, dengan pemberian logika ’0’), maka speaker mandapatkan tegangan Vcc, namun sebaliknya jika transistor OFF speaker juga akan OFF.

Jika keadaan ON dan OFF ini diberikan secara periodik, maka akan timbul suatu gelombang (gelombang kotak) dengan frekuensi tertentu (berdasarkan periode gelombang). Dengan demikian program yang dibuat harus bisa membangkitkan gelombang kotak pada port mikrokontroler. Berikut ini adalah Gambar 3.6 rangkaian penggerak speaker yang masukannya dari port mikrokontroler.

Perancangan Perangkat Lunak Mikrokontroler AT89S52

Sebelum melakukan permrograman alat, maka diperlukan rancangan perangkat lunak mikrokontroler. Rancangan perangkat lunak (diagram alir) ini diperlukan untuk memudahkan pada saat pemrograman. Berikut ini adalah Gambar 3.8 diagram alir alat Alarm Pengingat Waktu Minum Obat Menggunakan RTC DS12C887 Berbasis Mikrokontroler AT89S52.

Listing Program

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Program Alarm Obat
; RTC DS 12C887
; Mikrokontroler AT89S52
; LCD M1632
; Push Button = 4
; Output Speaker = 1
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
K_next bit p3.1
K_menu bit p3.0
K_up bit p3.3
K_down bit p3.2

LCD_rs bit p1.1
LCD_cs bit p1.0

RTC_cs bit p3.5

Speaker bit p2.0

Nada_1 Equ -1000
Nada_2 Equ -655
Nada_3 Equ -500

memori_1 equ 20H
memori_1x1 bit 20H.0
memori_1x2 bit 20H.1
memori_1x3 bit 20H.2
memori_1x4 bit 20H.3

memori_2 equ 21H
memori_2x1 bit 21H.0
memori_2x2 bit 21H.1
memori_2x3 bit 21H.2
memori_2x4 bit 21H.3

memori_3 equ 22H
memori_3x1 bit 22H.0
memori_3x2 bit 22H.1
memori_3x3 bit 22H.2
memori_3x4 bit 22H.3

memori_4 equ 23H
memori_4x1 bit 23H.0
memori_4x2 bit 23H.1
memori_4x3 bit 23H.2
memori_4x4 bit 23H.3

bebas equ 25H

Del1 equ 30h
Del2 equ 31h
Tmp equ 33h
Dech equ 36h
DecL equ 37h
Almcount equ 38h
Tmp1 equ 3ch
Detik_lama equ 3dh

jam_rtc equ 50h
menit_rtc equ 51h
detik_rtc equ 52h

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Memori RTC
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Secon equ 0
Minute equ 2
Hour equ 4
Day_week equ 6
Day_month equ 7
Month equ 8
Year equ 9
Reg_a equ 10
Reg_b equ 11

RTC_menit_obat1 equ 20
RTC_jam_obat1 equ 21
RTC_menit_obat2 equ 22
RTC_jam_obat2 equ 23
RTC_menit_obat3 equ 24
RTC_jam_obat3 equ 25
RTC_menit_obat4 equ 26
RTC_jam_obat4 equ 27

aktif_Obat_1 equ 30H
aktif_Obat_2 equ 31H
aktif_Obat_3 equ 32H
aktif_Obat_4 equ 33H

Alamat_obat_1 equ 40H
Alamat_obat_2 equ 41H
Alamat_obat_3 equ 42H
Alamat_obat_4 equ 43H
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Program utama
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
org 0h
restart:
mov tmod,#01H
mov memori_1,#0ffh
mov memori_2,#0ffh
mov memori_3,#0ffh
mov memori_4,#0ffh

Mulai: call inisialisasi_lcd
call inisialisasi_rtc
mov dptr,#judul
call tulis_lcd
call tunda_long
call nada_alarm_1
mov dptr,#waktu
call tulis_lcd

Ulang: mov detik_lama,a
call display

Dtk: mov dptr,#secon
clr rtc_cs
movx a,@dptr
setb rtc_cs
cjne a,detik_lama,ulang
call scaning_memori_1
call scaning_memori_2
call scaning_memori_3
call scaning_memori_4
ulangan:
mov detik_lama,a
call display
jb k_menu,dtk
call setting_pilihan
jmp ulang
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
scaning_memori_1:
mov dptr,#Alamat_obat_1
call ambil_rtc_desimal
mov a,tmp
cjne a,#01,keluar_1
mov dptr,#aktif_Obat_1
call ambil_rtc_desimal
mov a,tmp
cjne a,#1,lanjut_1_1x2
call scan_obat_1_1x1
call reseter
ret
lanjut_1_1x2:
cjne a,#02,lanjut_1_1x3
call scan_obat_1_1x1
call scan_obat_1_1x3
call reseter
ret
lanjut_1_1x3:
cjne a,#03,lanjut_1_1x4
call scan_obat_1_1x1
call scan_obat_1_1x2
call scan_obat_1_1x3
call reseter
ret
lanjut_1_1x4:
cjne a,#04,keluar_1
call scan_obat_1_1x1
call scan_obat_1_1x2
call scan_obat_1_1x3
call scan_obat_1_1x4
call reseter
keluar_1:
ret
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
scaning_memori_2:
mov dptr,#Alamat_obat_2
call ambil_rtc_desimal
mov a,tmp
cjne a,#01,keluar_2
mov dptr,#aktif_Obat_2
call ambil_rtc_desimal
mov a,tmp
cjne a,#01,lanjut_2_1x2
call scan_obat_2_1x1
call reseter
ret
lanjut_2_1x2:
cjne a,#02,lanjut_2_1x3
call scan_obat_2_1x1
call scan_obat_2_1x3
call reseter
ret
lanjut_2_1x3:
cjne a,#03,lanjut_2_1x4
call scan_obat_2_1x1
call scan_obat_2_1x2
call scan_obat_2_1x3
call reseter
ret
lanjut_2_1x4:
cjne a,#04,keluar_2
call scan_obat_2_1x1
call scan_obat_2_1x2
call scan_obat_2_1x3
call scan_obat_2_1x4
call reseter
keluar_2:
ret
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
scaning_memori_3:
mov dptr,#Alamat_obat_3
call ambil_rtc_desimal
mov a,tmp
cjne a,#01,keluar_3
mov dptr,#aktif_Obat_3
call ambil_rtc_desimal
mov a,tmp
cjne a,#01,lanjut_3_1x2
call scan_obat_3_1x1
call reseter
ret
lanjut_3_1x2:
cjne a,#02,lanjut_3_1x3
call scan_obat_3_1x1
call scan_obat_3_1x3
call reseter
ret
lanjut_3_1x3:
cjne a,#03,lanjut_3_1x4
call scan_obat_3_1x1
call scan_obat_3_1x2
call scan_obat_3_1x3
call reseter
ret
lanjut_3_1x4:
cjne a,#04,keluar_3
call scan_obat_3_1x1
call scan_obat_3_1x2
call scan_obat_3_1x3
call scan_obat_3_1x4
call reseter
keluar_3:
ret
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
scaning_memori_4:
mov dptr,#Alamat_obat_4
call ambil_rtc_desimal
mov a,tmp
cjne a,#01,keluar_4
mov dptr,#aktif_Obat_4
call ambil_rtc_desimal
mov a,tmp
cjne a,#01,lanjut_4_1x2
call scan_obat_4_1x1
call reseter
ret
lanjut_4_1x2:
cjne a,#02,lanjut_4_1x3
call scan_obat_4_1x1
call scan_obat_4_1x3
call reseter
ret
lanjut_4_1x3:
cjne a,#03,lanjut_4_1x4
call scan_obat_4_1x1
call scan_obat_4_1x2
call scan_obat_4_1x3
call reseter
ret
lanjut_4_1x4:
cjne a,#04,keluar_4
call scan_obat_4_1x1
call scan_obat_4_1x2
call scan_obat_4_1x3
call scan_obat_4_1x4
call reseter
keluar_4:
ret
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Scan waktu Alarm Obat
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
scan_obat_1_1x1:
call ambil_waktu
mov a,jam_rtc
cjne a,#08,keluar_1_1x1
mov a,menit_rtc
cjne a,#00,keluar_1_1x1
jb memori_1x1,alarm_1_1x1
jmp keluar_1_1x1
alarm_1_1x1:
call tampilan_obat_1_1x1
call alarm_mulai
jb k_menu,cek_alarm_1_1x1
jnb K_menu,$
jmp berhenti_1_1x1
cek_alarm_1_1x1:
call ambil_waktu
mov a,jam_rtc
cjne a,#08,alarm_1_1x1
mov a,menit_rtc
cjne a,#01,alarm_1_1x1
setb memori_1x1
jmp matikan_1_1x1
berhenti_1_1x1:
clr memori_1x1
matikan_1_1x1:
clr speaker
mov dptr,#waktu
call tulis_lcd
ret
keluar_1_1x1:
ret

scan_obat_1_1x2:
call ambil_waktu
mov a,jam_rtc
cjne a,#14,keluar_1_1x2
mov a,menit_rtc
cjne a,#00,keluar_1_1x2
jb memori_1x2,alarm_1_1x2
jmp keluar_1_1x2
alarm_1_1x2:
call tampilan_obat_1_1x2
call alarm_mulai
jb k_menu,cek_alarm_1_1x2
jnb K_menu,$
jmp berhenti_1_1x2
cek_alarm_1_1x2:
call ambil_waktu
mov a,jam_rtc
cjne a,#14,alarm_1_1x2
mov a,menit_rtc
cjne a,#01,alarm_1_1x2
setb memori_1x2
jmp matikan_1_1x2
berhenti_1_1x2:
clr memori_1x2
matikan_1_1x2:
clr speaker
mov dptr,#waktu
call tulis_lcd
ret
keluar_1_1x2:
ret

scan_obat_1_1x3:
call ambil_waktu
mov a,jam_rtc
cjne a,#20,keluar_1_1x3
mov a,menit_rtc
cjne a,#00,keluar_1_1x3
jb memori_1x3,alarm_1_1x3
jmp keluar_1_1x3
alarm_1_1x3:
call tampilan_obat_1_1x3
call alarm_mulai
jb k_menu,cek_alarm_1_1x3
jnb K_menu,$
jmp berhenti_1_1x3
cek_alarm_1_1x3:
call ambil_waktu
mov a,jam_rtc
cjne a,#20,alarm_1_1x3
mov a,menit_rtc
cjne a,#01,alarm_1_1x3
setb memori_1x3
jmp matikan_1_1x3
berhenti_1_1x3:
clr memori_1x3
matikan_1_1x3:
clr speaker
mov dptr,#waktu
call tulis_lcd
ret
keluar_1_1x3:
ret

scan_obat_1_1x4:
call ambil_waktu
mov a,jam_rtc
cjne a,#02,keluar_1_1x4
mov a,menit_rtc
cjne a,#00,keluar_1_1x4
jb memori_1x4,alarm_1_1x4
jmp keluar_1_1x4
alarm_1_1x4:
call tampilan_obat_1_1x4
call alarm_mulai
jb k_menu,cek_alarm_1_1x4
jnb K_menu,$
jmp berhenti_1_1x4
cek_alarm_1_1x4:
call ambil_waktu
mov a,jam_rtc
cjne a,#02,alarm_1_1x4
mov a,menit_rtc
cjne a,#01,alarm_1_1x4
setb memori_1x4
jmp matikan_1_1x4
berhenti_1_1x4:
clr memori_1x4
matikan_1_1x4:
clr speaker
mov dptr,#waktu
call tulis_lcd
ret
keluar_1_1x4:
ret
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
scan_obat_2_1x1:
call ambil_waktu
mov a,jam_rtc
cjne a,#08,keluar_2_1x1
mov a,menit_rtc
cjne a,#02,keluar_2_1x1
jb memori_2x1,alarm_2_1x1
jmp keluar_2_1x1
alarm_2_1x1:
call tampilan_obat_2_1x1
call alarm_mulai
jb k_menu,cek_alarm_2_1x1
jnb K_menu,$
jmp berhenti_2_1x1
cek_alarm_2_1x1:
call ambil_waktu
mov a,jam_rtc
cjne a,#08,alarm_2_1x1
mov a,menit_rtc
cjne a,#03,alarm_2_1x1
setb memori_2x1
jmp matikan_2_1x1
berhenti_2_1x1:
clr memori_2x1
matikan_2_1x1:
clr speaker
mov dptr,#waktu
call tulis_lcd
ret
keluar_2_1x1:
ret

scan_obat_2_1x2:
call ambil_waktu
mov a,jam_rtc
cjne a,#14,keluar_2_1x2
mov a,menit_rtc
cjne a,#02,keluar_2_1x2
jb memori_2x2,alarm_2_1x2
jmp keluar_2_1x2
alarm_2_1x2:
call tampilan_obat_2_1x2
call alarm_mulai
jb k_menu,cek_alarm_2_1x2
jnb K_menu,$
jmp berhenti_2_1x2
cek_alarm_2_1x2:
call ambil_waktu
mov a,jam_rtc
cjne a,#14,alarm_2_1x2
mov a,menit_rtc
cjne a,#03,alarm_2_1x2
setb memori_2x2
jmp matikan_2_1x2
berhenti_2_1x2:
clr memori_2x2
matikan_2_1x2:
clr speaker
mov dptr,#waktu
call tulis_lcd
ret
keluar_2_1x2:
ret

scan_obat_2_1x3:
call ambil_waktu
mov a,jam_rtc
cjne a,#20,keluar_2_1x3
mov a,menit_rtc
cjne a,#02,keluar_2_1x3
jb memori_2x3,alarm_2_1x3
jmp keluar_2_1x3
alarm_2_1x3:
call tampilan_obat_2_1x3
call alarm_mulai
jb k_menu,cek_alarm_2_1x3
jnb K_menu,$
jmp berhenti_2_1x3
cek_alarm_2_1x3:
call ambil_waktu
mov a,jam_rtc
cjne a,#20,alarm_2_1x3
mov a,menit_rtc
cjne a,#03,alarm_2_1x3
setb memori_2x3
jmp matikan_2_1x3
berhenti_2_1x3:
clr memori_2x3
matikan_2_1x3:
clr speaker
mov dptr,#waktu
call tulis_lcd
ret
keluar_2_1x3:
ret

scan_obat_2_1x4:
call ambil_waktu
mov a,jam_rtc
cjne a,#02,keluar_2_1x4
mov a,menit_rtc
cjne a,#02,keluar_2_1x4
jb memori_2x4,alarm_2_1x4
jmp keluar_2_1x4
alarm_2_1x4:
call tampilan_obat_2_1x4
call alarm_mulai
jb k_menu,cek_alarm_2_1x4
jnb K_menu,$
jmp berhenti_2_1x4
cek_alarm_2_1x4:
call ambil_waktu
mov a,jam_rtc
cjne a,#02,alarm_2_1x4
mov a,menit_rtc
cjne a,#03,alarm_2_1x4
setb memori_2x4
jmp matikan_2_1x4
berhenti_2_1x4:
clr memori_2x4
matikan_2_1x4:
clr speaker
mov dptr,#waktu
call tulis_lcd
ret
keluar_2_1x4:
ret
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
scan_obat_3_1x1:
call ambil_waktu
mov a,jam_rtc
cjne a,#08,keluar_3_1x1
mov a,menit_rtc
cjne a,#04,keluar_3_1x1
jb memori_3x1,alarm_3_1x1
jmp keluar_3_1x1
alarm_3_1x1:
call tampilan_obat_3_1x1
call alarm_mulai
jb k_menu,cek_alarm_3_1x1
jnb K_menu,$
jmp berhenti_3_1x1
cek_alarm_3_1x1:
call ambil_waktu
mov a,jam_rtc
cjne a,#08,alarm_3_1x1
mov a,menit_rtc
cjne a,#05,alarm_3_1x1
setb memori_3x1
jmp matikan_3_1x1
berhenti_3_1x1:
clr memori_3x1
matikan_3_1x1:
clr speaker
mov dptr,#waktu
call tulis_lcd
ret
keluar_3_1x1:
ret

scan_obat_3_1x2:
call ambil_waktu
mov a,jam_rtc
cjne a,#14,keluar_3_1x2
mov a,menit_rtc
cjne a,#04,keluar_3_1x2
jb memori_3x2,alarm_3_1x2
jmp keluar_3_1x2
alarm_3_1x2:
call tampilan_obat_3_1x2
call alarm_mulai
jb k_menu,cek_alarm_3_1x2
jnb K_menu,$
jmp berhenti_3_1x2
cek_alarm_3_1x2:
call ambil_waktu
mov a,jam_rtc
cjne a,#14,alarm_3_1x2
mov a,menit_rtc
cjne a,#05,alarm_3_1x2
setb memori_3x2
jmp matikan_3_1x2
berhenti_3_1x2:
clr memori_3x2
matikan_3_1x2:
clr speaker
mov dptr,#waktu
call tulis_lcd
ret
keluar_3_1x2:
ret

scan_obat_3_1x3:
call ambil_waktu
mov a,jam_rtc
cjne a,#20,keluar_3_1x3
mov a,menit_rtc
cjne a,#04,keluar_3_1x3
jb memori_3x3,alarm_3_1x3
jmp keluar_3_1x3
alarm_3_1x3:
call tampilan_obat_3_1x3
call alarm_mulai
jb k_menu,cek_alarm_3_1x3
jnb K_menu,$
jmp berhenti_3_1x3
cek_alarm_3_1x3:
call ambil_waktu
mov a,jam_rtc
cjne a,#20,alarm_3_1x3
mov a,menit_rtc
cjne a,#05,alarm_3_1x3
setb memori_3x3
jmp matikan_3_1x3
berhenti_3_1x3:
clr memori_3x3
matikan_3_1x3:
clr speaker
mov dptr,#waktu
call tulis_lcd
ret
keluar_3_1x3:
ret

scan_obat_3_1x4:
call ambil_waktu
mov a,jam_rtc
cjne a,#02,keluar_3_1x4
mov a,menit_rtc
cjne a,#04,keluar_3_1x4
jb memori_3x4,alarm_3_1x4
jmp keluar_3_1x4
alarm_3_1x4:
call tampilan_obat_3_1x4
call alarm_mulai
jb k_menu,cek_alarm_3_1x4
jnb K_menu,$
jmp berhenti_3_1x4
cek_alarm_3_1x4:
call ambil_waktu
mov a,jam_rtc
cjne a,#02,alarm_3_1x4
mov a,menit_rtc
cjne a,#05,alarm_3_1x4
setb memori_3x4
jmp matikan_3_1x4
berhenti_3_1x4:
clr memori_3x4
matikan_3_1x4:
clr speaker
mov dptr,#waktu
call tulis_lcd
ret
keluar_3_1x4:
ret
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
scan_obat_4_1x1:
call ambil_waktu
mov a,jam_rtc
cjne a,#08,keluar_4_1x1
mov a,menit_rtc
cjne a,#06,keluar_4_1x1
jb memori_4x1,alarm_4_1x1
jmp keluar_4_1x1
alarm_4_1x1:
call tampilan_obat_4_1x1
call alarm_mulai
jb k_menu,cek_alarm_4_1x1
jnb K_menu,$
jmp berhenti_4_1x1
cek_alarm_4_1x1:
call ambil_waktu
mov a,jam_rtc
cjne a,#08,alarm_4_1x1
mov a,menit_rtc
cjne a,#07,alarm_4_1x1
setb memori_4x1
jmp matikan_4_1x1
berhenti_4_1x1:
clr memori_4x1
matikan_4_1x1:
clr speaker
mov dptr,#waktu
call tulis_lcd
ret
keluar_4_1x1:
ret

scan_obat_4_1x2:
call ambil_waktu
mov a,jam_rtc
cjne a,#14,keluar_4_1x2
mov a,menit_rtc
cjne a,#06,keluar_4_1x2
jb memori_4x2,alarm_4_1x2
jmp keluar_4_1x2
alarm_4_1x2:
call tampilan_obat_4_1x2
call alarm_mulai
jb k_menu,cek_alarm_4_1x2
jnb K_menu,$
jmp berhenti_4_1x2
cek_alarm_4_1x2:
call ambil_waktu
mov a,jam_rtc
cjne a,#14,alarm_4_1x2
mov a,menit_rtc
cjne a,#07,alarm_4_1x2
setb memori_4x2
jmp matikan_4_1x2
berhenti_4_1x2:
clr memori_4x2
matikan_4_1x2:
clr speaker
mov dptr,#waktu
call tulis_lcd
ret
keluar_4_1x2:
ret

scan_obat_4_1x3:
call ambil_waktu
mov a,jam_rtc
cjne a,#20,keluar_4_1x3
mov a,menit_rtc
cjne a,#06,keluar_4_1x3
jb memori_4x3,alarm_4_1x3
jmp keluar_4_1x3
alarm_4_1x3:
call tampilan_obat_4_1x3
call alarm_mulai
jb k_menu,cek_alarm_4_1x3
jnb K_menu,$
jmp berhenti_4_1x3
cek_alarm_4_1x3:
call ambil_waktu
mov a,jam_rtc
cjne a,#20,alarm_4_1x3
mov a,menit_rtc
cjne a,#07,alarm_4_1x3
setb memori_4x3
jmp matikan_4_1x3
berhenti_4_1x3:
clr memori_4x3
matikan_4_1x3:
clr speaker
mov dptr,#waktu
call tulis_lcd
ret
keluar_4_1x3:
ret

scan_obat_4_1x4:
call ambil_waktu
mov a,jam_rtc
cjne a,#02,keluar_4_1x4
mov a,menit_rtc
cjne a,#06,keluar_4_1x4
jb memori_4x4,alarm_4_1x4
jmp keluar_4_1x4
alarm_4_1x4:
call tampilan_obat_4_1x4
call alarm_mulai
jb k_menu,cek_alarm_4_1x4
jnb K_menu,$
jmp berhenti_4_1x4
cek_alarm_4_1x4:
call ambil_waktu
mov a,jam_rtc
cjne a,#02,alarm_4_1x4
mov a,menit_rtc
cjne a,#07,alarm_4_1x4
setb memori_4x4
jmp matikan_4_1x4
berhenti_4_1x4:
clr memori_4x4
matikan_4_1x4:
clr speaker
mov dptr,#waktu
call tulis_lcd
ret
keluar_4_1x4:
ret
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
tampilan_obat_1_1x1:
mov dptr,#alarm_obat1_1
call tulis_lcd
ret
tampilan_obat_1_1x2:
mov dptr,#alarm_obat1_2
call tulis_lcd
ret
tampilan_obat_1_1x3:
mov dptr,#alarm_obat1_3
call tulis_lcd
ret
tampilan_obat_1_1x4:
mov dptr,#alarm_obat1_4
call tulis_lcd
ret
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
tampilan_obat_2_1x1:
mov dptr,#alarm_obat2_1
call tulis_lcd
ret
tampilan_obat_2_1x2:
mov dptr,#alarm_obat2_2
call tulis_lcd
ret
tampilan_obat_2_1x3:
mov dptr,#alarm_obat2_3
call tulis_lcd
ret
tampilan_obat_2_1x4:
mov dptr,#alarm_obat2_4
call tulis_lcd
ret
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
tampilan_obat_3_1x1:
mov dptr,#alarm_obat3_1
call tulis_lcd
ret
tampilan_obat_3_1x2:
mov dptr,#alarm_obat3_2
call tulis_lcd
ret
tampilan_obat_3_1x3:
mov dptr,#alarm_obat3_3
call tulis_lcd
ret
tampilan_obat_3_1x4:
mov dptr,#alarm_obat3_4
call tulis_lcd
ret
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
tampilan_obat_4_1x1:
mov dptr,#alarm_obat4_1
call tulis_lcd
ret
tampilan_obat_4_1x2:
mov dptr,#alarm_obat4_2
call tulis_lcd
ret
tampilan_obat_4_1x3:
mov dptr,#alarm_obat4_3
call tulis_lcd
ret
tampilan_obat_4_1x4:
mov dptr,#alarm_obat4_4
call tulis_lcd
ret

reseter:
call ambil_waktu
mov a,jam_rtc
cjne a,#0,keluar
mov a,menit_rtc
cjne a,#0,keluar
mov memori_1,#0ffh
mov memori_2,#0ffh
mov memori_3,#0ffh
mov memori_4,#0ffh
keluar: ret

alarm_mulai:
call nada_alarm_1
call nada_alarm_2
call nada_alarm_3
ret
ambil_waktu:
mov dptr,#hour
call ambil_rtc_desimal
mov jam_rtc,tmp
mov dptr,#minute
call ambil_rtc_desimal
mov menit_rtc,tmp
ret
ambil_detik:
mov dptr,#secon
call ambil_rtc_desimal
mov detik_rtc,tmp
ret
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Nada alarm
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
nada_alarm_1:
mov bebas,#0
mulai_nada_1:
mov th0,#high nada_1
mov tl0,#high nada_1
setb tr0
jnb tf0,$
clr tr0
clr tf0
cpl speaker
djnz bebas,mulai_nada_1
ret
nada_alarm_2:
mov bebas,#0
mulai_nada_2:
mov th0,#high nada_2
mov tl0,#high nada_2
setb tr0
jnb tf0,$
clr tr0
clr tf0
cpl speaker
djnz bebas,mulai_nada_2
ret
nada_alarm_3:
mov bebas,#0
mulai_nada_3:
mov th0,#high nada_3
mov tl0,#high nada_3
setb tr0
jnb tf0,$
clr tr0
clr tf0
cpl speaker
djnz bebas,mulai_nada_3
ret
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Tampilan utama LCD
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Display:
mov a,#80h
call write_inst
T_hari:
mov dptr,#day_week
clr rtc_cs
movx a,@dptr
setb rtc_cs
mov dptr,#hari
dec a
mov b,#6
mul ab
mov tmp,#6
mov tmp1,a
T_hari_2:
mov a,tmp1
movc a,@a+dptr
call write_data
inc dptr
djnz tmp,T_hari_2
mov a,#20h
call write_data
mov a,#088h
call write_inst
T_jam:
mov dptr,#hour
call ambil_data_rtc
mov a,#’:’
call write_data
T_menit:
mov dptr,#minute
call ambil_data_rtc
mov a,#’:’
call write_data
T_detik:
mov dptr,#secon
call ambil_data_rtc
T_tanggal:
mov a,#0c0h
call write_inst
mov dptr,#day_month
call ambil_data_rtc
mov a,#’ ‘
call write_data
T_bulan:
mov dptr,#month
clr rtc_cs
movx a,@dptr
setb rtc_cs
mov dptr,#bulan
dec a
mov b,#8
mul ab
mov tmp,#8
mov tmp1,a
T_bulan_2:
mov a,tmp1
movc a,@a+dptr
call write_data
inc dptr
djnz tmp,T_bulan_2
mov a,#20h
call write_data
mov a,#0ceh
call write_inst
T_tahun:
mov dptr,#year
call ambil_data_rtc
mov p0,#0ffh
exit0:
ret
disp_set:
mov a,#0cah
call write_inst
call ambil_data_rtc
ret
disp_setting:
mov a,#0c1h
call write_inst
call ambil_data_rtc
ret
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Settingan tombol pilihan
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Setting_pilihan:
mov dptr,#rtc0
call tulis_lcd
pilihan_set_jam:
mov tmp1,#0
jb k_up,pilihan_set_timer
bounce_p1a:
jnb k_up,$
djnz tmp1,bounce_p1a
call tunda_long
call setting_1
ret
pilihan_set_timer:
mov tmp1,#0
jb k_down,keluar_pilihan
bounce_p1b:
jnb k_down,$
djnz tmp1,bounce_p1b
call tunda_long
call setting_timer
ret
keluar_pilihan:
jb k_next,pilihan_set_jam
jmp setting_7
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Settingan tombol alarm obat
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
setting_timer:
mov almcount,#0
mov dptr,#Obat_aktif_1
call tulis_lcd
mov dptr,#Alamat_obat_1
mov tmp1,#0
bou_t1a:
jnb k_menu,$
djnz tmp1,bou_t1a
Setting_t1a:
call disp_setting
set_t1a:
jb k_next,set_t2a
inc almcount
jnb k_next,$
jmp Setting_t2
set_t2a:
jb k_up,set_t3a
mov p0,#0ffh
call up_aktif
jmp setting_t1a
set_t3a:
jb k_down,set_t4a
mov p0,#0ffh
call down_aktif
jmp setting_t1a
set_t4a:
mov tmp1,#0
bou_t1b:
jb k_next,setting_t1a
djnz tmp1,bou_t1b
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Setting_t2:
jnb k_next,$
mov dptr,#obat_jenis_1
call tulis_lcd
mov dptr,#aktif_Obat_1
Setting_t2a:
call disp_setting
set_t1b:
jb k_next,set_t2b
inc almcount
jnb k_next,$
jmp setting_t3
set_t2b:
jb k_up,set_t3b
mov p0,#0ffh
call up_jenis
jmp setting_t2a
set_t3b:
jb k_down,setting_t2a
mov p0,#0ffh
call down_jenis
jmp setting_t2a
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Setting_t3:
jnb k_next,$
mov dptr,#Obat_aktif_2
call tulis_lcd
mov dptr,#Alamat_obat_2
Setting_t3a:
call disp_setting
set_t1c:
jb k_next,set_t2c
inc almcount
jnb k_next,$
jmp setting_t4
set_t2c:
jb k_up,set_t3c
mov p0,#0ffh
call up_aktif
jmp setting_t3a
set_t3c:
jb k_down,setting_t3a
mov p0,#0ffh
call down_aktif
jmp setting_t3a
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Setting_t4:
jnb k_next,$
mov dptr,#obat_jenis_2
call tulis_lcd
mov dptr,#aktif_Obat_2
Setting_t4a:
call disp_setting
set_t1d:
jb k_next,set_t2d
inc almcount
jnb k_next,$
jmp setting_t5
set_t2d:
jb k_up,set_t3d
mov p0,#0ffh
call up_jenis
jmp setting_t4a
set_t3d:
jb k_down,setting_t4a
mov p0,#0ffh
call down_jenis
jmp setting_t4a
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Setting_t5:
jnb k_next,$
mov dptr,#Obat_aktif_3
call tulis_lcd
mov dptr,#Alamat_obat_3
Setting_t5a:
call disp_setting
set_t1e:
jb k_next,set_t2e
inc almcount
jnb k_next,$
jmp setting_t6
set_t2e:
jb k_up,set_t3e
mov p0,#0ffh
call up_aktif
jmp setting_t5a
set_t3e:
jb k_down,setting_t5a
mov p0,#0ffh
call down_aktif
jmp setting_t5a
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Setting_t6:
jnb k_next,$
mov dptr,#obat_jenis_3
call tulis_lcd
mov dptr,#aktif_Obat_3
Setting_t6a:
call disp_setting
set_t1f:
jb k_next,set_t2f
inc almcount
jnb k_next,$
jmp setting_t7
set_t2f:
jb k_up,set_t3f
mov p0,#0ffh
call up_jenis
jmp setting_t6a
set_t3f:
jb k_down,setting_t6a
mov p0,#0ffh
call down_jenis
jmp setting_t6a
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Setting_t7:
jnb k_next,$
mov dptr,#Obat_aktif_4
call tulis_lcd
mov dptr,#Alamat_obat_4
Setting_t7a:
call disp_setting
set_t1g:
jb k_next,set_t2g
inc almcount
jnb k_next,$
jmp setting_t8
set_t2g:
jb k_up,set_t3g
mov p0,#0ffh
call up_aktif
jmp setting_t7a
set_t3g:
jb k_down,setting_t7a
mov p0,#0ffh
call down_aktif
jmp setting_t7a
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Setting_t8:
jnb k_next,$
mov dptr,#obat_jenis_4
call tulis_lcd
mov dptr,#aktif_Obat_4
Setting_t8a:
call disp_setting
set_t1h:
jb k_next,set_t2h
inc almcount
jnb k_next,$
jmp setting_7
set_t2h:
jb k_up,set_t3h
mov p0,#0ffh
call up_jenis
jmp setting_t8a
set_t3h:
jb k_down,setting_t8a
mov p0,#0ffh
call down_jenis
jmp setting_t8a
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Settingan tombol jam dan kalender
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Setting_1:
mov almcount,#0
mov dptr,#rtc1
call tulis_lcd
mov dptr,#hour
mov tmp1,#0
bounce_1a:
jnb k_menu,$
djnz tmp1,bounce_1a
Setting_1a:
call disp_set
cekset_1a:
jb k_next,cekset_2a
inc almcount
jnb k_next,$
jmp setting_2
cekset_2a:
jb k_up,cekset_3a
mov p0,#0ffh
call up_jam
jmp setting_1a
cekset_3a:
jb k_down,cekset_4a
mov p0,#0ffh
call down_jam
jmp setting_1a
cekset_4a:
mov tmp1,#0
bounce_1b:
jb k_next,setting_1a
djnz tmp1,bounce_1b
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Setting_2:
jnb k_next,$
mov dptr,#rtc2
call tulis_lcd
mov dptr,#minute
Setting_2a:
call disp_set
cekset_1b:
jb k_next,cekset_2b
inc almcount
jnb k_next,$
jmp setting_3
cekset_2b:
jb k_up,cekset_3b
mov p0,#0ffh
call up_menit
jmp setting_2a
cekset_3b:
jb k_down,setting_2a
mov p0,#0ffh
call down_menit
jmp setting_2a
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Setting_3:
jnb k_next,$
mov dptr,#rtc3
call tulis_lcd
setting_3a:
mov a,#0c8h
call write_inst
mov dptr,#day_week
clr rtc_cs
movx a,@dptr
setb rtc_cs
mov dptr,#hari
dec a
mov b,#6
mul ab
mov tmp,#6
mov tmp1,a
Setting_3b:
mov a,tmp1
movc a,@a+dptr
call write_data
inc dptr
djnz tmp,setting_3b
cekset_1c:
mov dptr,#day_week
jb k_next,cekset_2c
inc almcount
jnb k_next,$
jmp setting_4
cekset_2c:
jb k_up,cekset_3c
mov p0,#0ffh
call up_day
jmp setting_3a
cekset_3c:
jb k_down,cekset_1c
mov p0,#0ffh
call down_day
jmp setting_3a
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Setting_4:
jnb k_next,$
mov dptr,#rtc4
call tulis_lcd
mov dptr,#day_month
Setting_4a:
call disp_set
cekset_1d:
jb k_next,cekset_2d
inc almcount
jnb k_next,$
jmp setting_5
cekset_2d:
jb k_up,cekset_3d
mov p0,#0ffh
call up_day_month
jmp setting_4a
cekset_3d:
jb k_down,setting_4a
mov p0,#0ffh
call down_day_month
jmp setting_4a
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Setting_5:
jnb k_next,$
mov dptr,#rtc5
call tulis_lcd
setting_5a:
mov a,#0c7h
call write_inst
mov dptr,#month
clr rtc_cs
movx a,@dptr
setb rtc_cs
mov dptr,#bulan
dec a
mov b,#8
mul ab
mov tmp,#8
mov tmp1,a
Setting_5b:
mov a,tmp1
movc a,@a+dptr
call write_data
inc dptr
djnz tmp,setting_5b
cekset_1e:
mov dptr,#month
jb k_next,cekset_2e
inc almcount
jnb k_next,$
jmp setting_6
cekset_2e:
jb k_up,cekset_3e
mov p0,#0ffh
call up_month
jmp setting_5a
cekset_3e:
jb k_down,cekset_1e
mov p0,#0ffh
call down_month
jmp setting_5a
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Setting_6:
jnb k_next,$
mov dptr,#rtc6
call tulis_lcd
mov dptr,#year
Setting_6a:
mov a,#0cch
call write_inst
call ambil_data_rtc
cekset_1f:
jb k_next,cekset_2f
inc almcount
jnb k_next,$
jmp setting_7
cekset_2f:
jb k_up,cekset_3f
mov p0,#0ffh
call up_year
jmp setting_6a
cekset_3f:
jb k_down,setting_6a
mov p0,#0ffh
call down_year
jmp setting_6a
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Setting_7:
mov tmp1,#0
bounce_7a:
jnb k_next,$
djnz tmp1,bounce_7a
bounce_7b:
jnb k_menu,$
djnz tmp1,bounce_7b
mov dptr,#waktu
call tulis_lcd
ret
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Baca rtc up rtc down dan tulis rtc
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Baca_rtc_up:
mov r7,#25
Bounce_up:
jb k_up,exit
djnz r7,bounce_up
baca_up:
clr rtc_cs
movx a,@dptr
setb rtc_cs
inc a
ret
Baca_rtc_down:
mov r7,#25
baca_down:
jb k_down,exit
djnz r7,baca_down
clr rtc_cs
movx a,@dptr
setb rtc_cs
dec a
ret
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Tulis_rtc:
clr rtc_cs
movx @dptr,a
setb rtc_cs
Tunggu_tombol_dilepas:
ca:
mov r7,#25
cc:
jnb k_up,ca
jnb k_down,ca
djnz r7,cc
exit:
ret
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Rutin tambah & kurangi waktu aktif
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Up_aktif:
call baca_rtc_up
cjne a,#02,cek_01
cek_01:
jc belum_01
clr a
belum_01:
jmp tulis_rtc

Down_aktif:
call baca_rtc_down
cjne a,#0ffh,aktif_255
mov a,#01
aktif_255:
jmp tulis_rtc
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Rutin tambah & kurangi jenis obat
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Up_jenis:
call baca_rtc_up
cjne a,#05,cek_04
cek_04:
jc belum_04
clr a
belum_04:
jmp tulis_rtc

Down_jenis:
call baca_rtc_down
cjne a,#0ffh,jenis_255
mov a,#04
jenis_255:
jmp tulis_rtc
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Rutin tambah & kurangi menit
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Up_menit:
call baca_rtc_up
cjne a,#59,cek_59
cek_59:
jc belum_59
clr a
belum_59:
jmp tulis_rtc

Down_menit:
call baca_rtc_down
cjne a,#0ffh,m_255
mov a,#59
m_255:
jmp tulis_rtc
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Rutin tambah & kurangi jam
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Up_jam:
call baca_rtc_up
cjne a,#24,cek_24
cek_24:
jc belum_24
clr a
belum_24:
jmp tulis_rtc

Down_jam:
call baca_rtc_down
cjne a,#0ffh,j_255
mov a,#23
j_255:
jmp tulis_rtc
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Rutin tambah & kurangi hari dlm seminggu
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Up_day:
call baca_rtc_up
cjne a,#8,cek_7
cek_7:
jc belum_7
clr a
inc a
belum_7:
jmp tulis_rtc

Down_day:
call baca_rtc_down
jnz bukan_0_day
mov a,#7
bukan_0_day:
jmp tulis_rtc
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Rutin tambah & kurangi hari dlm sebulan
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Up_day_month:
call baca_rtc_up
cjne a,#32,cek_31
cek_31:
jc belum_31
clr a
inc a
belum_31:
jmp tulis_rtc

Down_day_month:
call baca_rtc_down
jnz bukan_0_daymonth
mov a,#31
bukan_0_daymonth:
jmp tulis_rtc
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Rutin tambah & kurangi bulan
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Up_month:
call baca_rtc_up
cjne a,#13,cek_12
cek_12:
jc belum_12
clr a
inc a
belum_12:
jmp tulis_rtc

Down_month:
call baca_rtc_down
jnz bukan_0_month
mov a,#12
bukan_0_month:
jmp tulis_rtc
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Rutin tambah & kurangi tahun
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Up_year:
call baca_rtc_up
cjne a,#100,cek_99
cek_99:
jc belum_99
clr a
belum_99:
jmp tulis_rtc

Down_year:
call baca_rtc_down
cjne a,#0ffh,y_255
mov a,#99
y_255:
jmp tulis_rtc
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; inisialisasi LCD
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Inisialisasi_LCD:
mov a,#03fh
call write_inst
call write_inst
mov a,#0dh
call write_inst
mov a,#06h
call write_inst
mov a,#01h
call write_inst
mov a,#0ch
call write_inst
ret
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; inisialisasi RTC
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Inisialisasi_rtc:
clr rtc_cs
; reg a = UIP DV2 DV1 DV0 RS3 RS2 RS1 RS0
; REG B = SET PIE AIE UIE SQWE DM 24/12 DSE
mov r0,#reg_a
mov a,#00101111b
movx @r0,a
inc r0
mov a,#00001110b
movx @r0,a
clr a
setb rtc_cs
ret
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Ambil data rtc dan tulis ke lcd
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Ambil_data_rtc:
clr rtc_cs
movx a,@dptr
setb rtc_cs
mov decl,a
call hextodec
mov tmp,a
swap a
anl a,#0fh
orl a,#30h
call write_data
mov a,tmp
anl a,#0fh
orl a,#30h
call write_data
ret
Ambil_rtc_desimal:
clr rtc_cs
movx a,@dptr
setb rtc_cs
mov tmp,a
ret
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Rutin menulis instruksi ke lcd
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
write_inst:
clr lcd_rs
setb lcd_cs
mov p0,a
wrdt:
clr lcd_cs
setb lcd_cs
call delay
mov p0,#0ffh
ret
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Rutin menulis data ke lcd
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
write_data:
setb lcd_rs
setb lcd_cs
trsa:
mov p0,a
jmp wrdt
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; tulis 16 char di baris lcd atas
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Tulis_lcd_atas:
mov a,#80h
tlcdb:
mov r3,#16
call write_inst
tulis1:
clr a
movc a,@a+dptr
call write_data
inc dptr
djnz r3,tulis1
ret
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; tulis 16 char di baris lcd bawah
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Tulis_lcd_bawah:
mov a,#0c0h
jmp tlcdb
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; tulis 32 char di baris lcd
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Tulis_lcd:
call tulis_lcd_atas
call tulis_lcd_bawah
ret
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; konversi heksa ke desimal
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
hextodec:
mov psw,#0
clr c
mov dech,#0
mov a,decl
swap a
anl a,#0fh ;00001111
mov tmp,a
jz sudah_ditambah
clr a
tambah_16:
add a,#16h ;22 d
da a
mov r2,a
clr a
addc a,dech
mov dech,a
mov a,r2
djnz tmp,tambah_16
sudah_ditambah:
mov tmp,a
mov a,decl
anl a,#0fh
da a
add a,tmp
da a
mov decl,a
; desimal hanya di bawah 100
ret
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Rutin delay
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
delay:
mov del1,#5
delay1:
mov del2,#0
djnz del2,$
djnz del1,delay1
ret
ldelay:
mov del1,#0
call delay1
call delay1
ret
TUNDA_LONG:
MOV R5,#010H
JJz:
CALL TUNDAan
DJNZ R5,JJz
RET
TUNDAan:
MOV R7,#100
LD11:
DJNZ R6,$
DJNZ R7,LD11
RET
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Data
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Judul:db ‘ Alarm Pengingat’,'~Efqi Voluntoro~’

alarm_obat1_1:db ‘ Alarm Berbunyi ‘,’ Obat Jenis 1 ‘
alarm_obat1_2:db ‘ Alarm Berbunyi ‘,’ Obat Jenis 1 ‘
alarm_obat1_3:db ‘ Alarm Berbunyi ‘,’ Obat Jenis 1 ‘
alarm_obat1_4:db ‘ Alarm Berbunyi ‘,’ Obat Jenis 1 ‘

alarm_obat2_1:db ‘ Alarm Berbunyi ‘,’ Obat Jenis 2 ‘
alarm_obat2_2:db ‘ Alarm Berbunyi ‘,’ Obat Jenis 2 ‘
alarm_obat2_3:db ‘ Alarm Berbunyi ‘,’ Obat Jenis 2 ‘
alarm_obat2_4:db ‘ Alarm Berbunyi ‘,’ Obat Jenis 2 ‘

alarm_obat3_1:db ‘ Alarm Berbunyi ‘,’ Obat Jenis 3 ‘
alarm_obat3_2:db ‘ Alarm Berbunyi ‘,’ Obat Jenis 3 ‘
alarm_obat3_3:db ‘ Alarm Berbunyi ‘,’ Obat Jenis 3 ‘
alarm_obat3_4:db ‘ Alarm Berbunyi ‘,’ Obat Jenis 3 ‘

alarm_obat4_1:db ‘ Alarm Berbunyi ‘,’ Obat Jenis 4 ‘
alarm_obat4_2:db ‘ Alarm Berbunyi ‘,’ Obat Jenis 4 ‘
alarm_obat4_3:db ‘ Alarm Berbunyi ‘,’ Obat Jenis 4 ‘
alarm_obat4_4:db ‘ Alarm Berbunyi ‘,’ Obat Jenis 4 ‘

Waktu:db ‘ ‘,’ 20 ‘
Rtc0: db ‘Up ~Atur Waktu’,'Down ~Atur Alarm’
Rtc1: db ‘ Set 1 ‘,’Jam = [ ] ‘
Rtc2: db ‘ Set 2 ‘,’Menit = [ ] ‘
Rtc3: db ‘ Set 3 ‘,’Hari = [ ]‘
Rtc4: db ‘ Set 4 ‘,’Tanggal= [ ] ‘
Rtc5: db ‘ Set 5 ‘,’Bulan=[ ]‘
Rtc6: db ‘ Set 6 ‘,’Tahun = [20 ] ‘

obat_aktif_1:db ‘Obat 1 00 = Non ‘,’[ ] 01 = Aktf’
obat_aktif_2:db ‘Obat 2 00 = Non ‘,’[ ] 01 = Aktf’
obat_aktif_3:db ‘Obat 3 00 = Non ‘,’[ ] 01 = Aktf’
obat_aktif_4:db ‘Obat 4 00 = Non ‘,’[ ] 01 = Aktf’

obat_jenis_1:db ‘Jdwl x1=01,x2=02′,’[ ] x3=03,x4=04′
obat_jenis_2:db ‘Jdwl x1=01,x2=02′,’[ ] x3=03,x4=04′
obat_jenis_3:db ‘Jdwl x1=01,x2=02′,’[ ] x3=03,x4=04′
obat_jenis_4:db ‘Jdwl x1=01,x2=02′,’[ ] x3=03,x4=04′

Hari: db ‘Minggu’
db ‘Senin ‘
db ‘Selasa’
db ‘Rabu ‘
db ‘Kamis ‘
db ‘Jumat ‘
db ‘Sabtu ‘

Bulan: db ‘Januari ‘
db ‘Februari’
db ‘Maret ‘
db ‘April ‘
db ‘Mei ‘
db ‘Juni ‘
db ‘Juli ‘
db ‘Agustus ‘
db ‘Sptember’
db ‘Oktober ‘
db ‘November’
db ‘Desember’
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
END