Anda di halaman 1dari 22

A.

REAL TIME CLOCK

Real Time Clock merupakan suatu chip (IC) yang memiliki fungsi sebagai

penyimpan waktu dan tanggal. Ada dua buah jenis IC RTC yaitu:

1. DS1307 merupakanReal-time clock (RTC) menggunakan jalur data parallel

yang dapat meyimpan data-data detik, menit, jam, tanggal, bulan, hari dalam

seminggu, dan tahun valid hingga 2100. 56-byte, battery-backed, RAM

nonvolatile (NV) RAM untuk penyimpanan;

2. DS12C887 menggunakan jalur data seri yang memiliki register yg dapat

menyimpan data detik, menit, jam, tanggal, bulan dan tahun. RTC ini

memiliki 128 lokasi RAM yang terdiri dari 15 byte untuk data waktu serta

kontrol, dan 113 byte sebagai RAM umum.RTC DS 12C887 menggunakan

bus yang termultipleks untuk menghemat pin. Timing yang digunakan untuk

mengakses RTC dapat menggunakan intel timing atau motorola timing. RTC

ini juga dilengkapi dengan pin IRQ untuk kemudahan dalam proses.

1.1. RTC parallel (DS1307)

DS1307 merupakan Real-time clock (RTC) dengan jalur data parallel yang

memiliki Antarmuka serial Two-wire (I2C), Sinyal luaran gelombang-kotak

terprogram (Programmable squarewave), Deteksi otomatis kegagalan-daya (power-

fail) dan rangkaian switch, Konsumsi daya kurang dari 500nA menggunakn mode

baterei cadangan dengan operasional osilator. Tersedia fitur industri dengan ketahana

suhu: -40°C hingga +85°C. Tersedia dalam kemasa 8-pin DIP atau SOIC
Sedangkan daftar pin DS1307:

VCC - Primary Power Supply

X1, X2 - 32.768kHz Crystal Connection

VBAT - +3V Battery Input

GND - Ground

SDA - Serial Data

SCL - Serial Clock

SQW/OUT - Square Wave/Output Driver

Gambar diagram PIN:

Untuk masing-masing pin akan di jelaskan sebagai berikut:

1. X1

Merupakan pin yang digunakan untuk dihubungkan dengan

2. X2
Berfungsi sebagai keluaran/ output dari crystal yang digunakan. Trhubung

juga dengan X1

3. VBAT

Merupakan backup supply untuk seril RTC dalam menjalankan fungsi waktu

dan tanggal. Besarnya adalah 3V dengan menggunakan jenis Lithium Cell

atau sumber energy lain. Jika pin ini tidak di gunakan maka harus terhubung

dengan Ground. Sumber teganggan dengan 48mAH atau lebih besar dapat

digunakan sebagai cadangan energy sampai lebih dar 10 tahun, namun dengan

persyaratan untuk pengoprasian dalam suhu 25°C.

4. GND

Berfungsi sebagai Ground

5. SDA

Barfungsi sebagai masukan / keluaran (I/O) untuk I2C serial interface. Pin ini

bersifat open drain, oleh sebab itu membutuhkan eksternal pull up resistor.

6. SCL

Berfungsi sebagai clock untuk input ke I2C dan digunakan untuk

mensinkronisasipergerakan data dalam serial interface. bersifat open drain,

oleh sebab itu membutuhkan eksternal pull up resistor.

7. SWQ/OUT

Sebagai square wafe / Output Driver . jika di aktifkan, maka akan menjadi 4

frekuensi gelombang kotak yaitu 1 Hz, 4kHz, 8kHz, 32kHz sifat dari pin ini

sama dengan sifat pin SDA dan SCL sehingga membutuhkan eksternal pull up

resistor. Dapat dioprasikan dengan VCC maupun dengan VBAT.


8. VCC

Merupakan sumber tegangan utama. Jika sumber tegangan terhubung dengan

baik, maka pengaksesan data dan pembacaan data dapat dilakukan dengan

baik. Namun jika backup supply terhubung juga dengan VCC, namun besar

VCC di bawah VTP, maka pengaksesan data tidak dapat dilakukan.

1.2 RTC SERI DS12C887

DS12C887 mempunyai 14 buah register yang terdiri dari 4 Register Kontrol dan

10 Register Data. Register Data sendiri terpisah menjadi register waktu dan Register

Alarm sebagaimana ditunjukkan pada gambar 1. Setelah Register-register Kontrol

diinisialisasi, maka data waktu ataupun alarm dapat dibaca atau ditulisi dengan cara

mengakses register-register data yang bersangkutan.

Gambar 1. Pemetaan alamat pada RTC DS12C887

a. Register-register Kontrol

DS12C887 memiliki empat register kontrol yang bisa diakses sepanjang waktu,

meskipun selama siklus pembaharuan (update cycle).


UIP : Bit ini digunakan untuk memantau Flag Update In Progress (UIP). Jika bit ini

bernilai 1, maka Update Transfer akan segera muncul, namun bila bit ini bernilai 0,

maka Update transfer hanya akan muncul setelah 244 uDetik kemudian.

DV0, DV1, DV2 : Ketiga bit ini berfungsi untuk mengatur osilator ON atau OFF, dan

me-RESET hitung mundur. Kofigurasi 010 digunakan untuk mengatur osilator ON,

konfigurasi 11x digunakan untuk mengatur agar perhitungan mundur ditahan.

RS0, RS1, RS2 dan RS3 : Bit-bit ini digunakan untuk memilih 15 tingkat pembagi

frekwensi yang dapat digunakan untuk membangkitkan sinyal luaran pada pin SQW

atau Interupsi periodik. Tabel berikut menunjukkan berbagai macam kemungkinan

frekuensi luaran SQW dan laju Interupsi Peiodik berdasar nilai-nilai RS0, RS1, RS2,

dan RS3.

SET : Apabila bit ini bernilai 0, maka register data dapat diupdate setiap detiknya,

namun apabila bit ini bernilai 1, maka register data tidak dapat diupdate. Bit ini tidak

akan berpengaruh terhadap kondisi RESET.


PIE : Periodic Interrupt Enable, merupakan sebuah bit baca/tulis yang

membolehkan bit PF atau Periodic Interrupt Flag pada Register C meng-nol-kan pin

luaran IRQ. Jika PIE = 1, maka interupsi periodik akan dihasilkan dengan meng-nol-

kan pin luaran IRQ dengan laju yang ditentukan oleh RS0 s/d RS2 (lihat penjelasan

sebelumnya).

AIE : Alarm Interrupt Enable, bit yang membuat bit Alarm Flag dapat

membangkitkan kondisi LOW pada pin IRQ. Kondisi RESET akan mengubah bit ini

menjadi clear atau bernilai 0.

UIE : Update Ended Interrupt Enable, bit yang membuat bit Update End Flag (UF)

dapat membangkitkan kondisi LOW pada pin IRQ. Kondisi RESET atau logika 1

pada bit SET akan membuat bit ini berubah menjadi clear (bernilai 0).

SQWE : Apabila bit ini bernilai 1, maka gelombang kotak dengan frekwensi yang

ditentukan oleh pembagi frekwensi pada RS0 s/d RS3 akan dihasilakn melalui pin

SQW.

DM : DM = 1 untuk mode binary dan DM = 0 untuk data BCD pada Register Data.

24/12: Apabila bit ini bernilai 1, maka waktu berjalan berdasarkan 24 jam dan

sebaliknya bila bit ini bernilai 0, maka waktu berjalan berdasarkan 12 jam.

DSE : Daylight Saving Enable, apabila bit ini bernilai 1, maka akan terjadi proses

update pada saat 1:59:59 AM menjadi 3:00:00 AM pada Hari Minggu pertama bulan

April dan saat 1:59:59 AM menjadi 1:00:00 AM pada Hari Minggu terakhir Bulan

Oktober.
IRQF : Interrupt Request Flag, bit ini akan bernilai 1 apabila salah satu dari bit PF,

AF dan UF juga bernilai 1.

PF : Periodic Interrupt Flag, bit ini akan bernilai 1 secara periodik (tergantung bit

RS0 s/d RS3). Apabila bit PIE aktif, maka kondisi SET pada bit PF akan

membangkitkan kondisi LOW pada pin IRQ. Bit ini akan bernilai 0 saat pembacaan

pada Register C atau kondisi RESET.

AF : Alarm Interrupt Flag, bit ini akan bernilai 1 saat waktu sekarang cocok dengan

waktu yang diatur pada alarm. Apabila bit AIE aktif, maka kondisi SET pada bit AF

akan membangkitkan kondisi LOW pada pin IRQ. Bit ini akan bernilai 0 saat

pembacaan pada Register C atau kondisi RESET.

UF: Update Ended Interrupt Flag, bit ini siklus update. Apabila bit UIE aktif maka

kondisi SET pada bit ini akan membangkitkan kondisi LOW pada pin IRQ. Bit ini

akan bernilai 0 (Clear) saat pembacaan pada Register C atau kondisi RESET

VRT: Bit The Valid RAM and Time ini merupakan indikator kondisi baterai yang

terhubungkan ke pin Vbat. Bit ini tidak bisa ditulisi, dan seharusnya bernilai 1 terus

saat dibaca. Jika terjadi nilai 0, artinya terjadi pelemahan arus/tegangan pada baterai,

dan simpanan data RTC dan RAM menjadi dipertanyakan. Bit ini tidak dipengaruhi

RESET.

Berikut ini gambar pin-pin dari RTC DS 12C887, jumlah total pin-nya sebanyak 13

buah :
Gambar 1 Pin RTC DS 12C887

Gambar 2 Diagram Blok DS12C887

Terlihat dari diagram blok tersebut bawhwa RTC terbagi menjadi beberapa bagian

utama dengan kontrol maupun I/O untuk operasinya.

Berikut ini keterangan dari fungsi masing-masing pin


AD0-AD7 - Multiplexed Address/Data Bus

NC - No Connect (tidak dihubungkan kemana-mana)

MOT - Pemilih tipe bus

CS - Masukan RTC Chip Select

AS - Address Strobe (ALE)

R/W - Masukan Read/Write

DS - Data Strobe

RESET - Masukan Reset

IRQ - Luaran Permintaan Interupsi

SQW - Luaran Gelombang Kotak

VCC - +5 Volt Main Supply

GND - Ground

Penjelasan singkat dari masing-masing pin RTC DS12C887 sebagai berikut :

AD0 - AD7 (Adrress/Data bus yang ter-multipleks dan dwi-arah)

Bus yang ter-multipleks akan menghemat penggunaan pin karena informasi alamat

dan data menggunakan jalur sinyal yang sama. Siklus bus pertama digunakan untuk

jalur alamat, dan siklus bus kedua digunakan untuk jalur data (bergantian antara

alamat dan data). Intinya, kirim alamat melalui AD0-AD7 kemudian lakukan

penguncian alamat menggunakan siklus 0-1-0 pada AS/ALE, kemudian dilanjutkan

dengan proses pembacaan atau penulisan data ke alamat tersebut. RTC menghasilkan

luaran 8 bit data pada saat pin DS dan RD diberi pulsa. Bus akan menjadi

berimpedansi tinggi saat pulsa LOW diberikan pada pin DS (motorola) atau pulsa

HIGH diberikan pada pin RD (intel).


MOT (Mode Select)

Pin MOT memberikan kebebasan untuk memilih dua tipe bus. Ketika pin ini

dihubungkan dengan VCC, maka pewaktuan bus Motorolla yang dipilih, sedangkan

ketika dihubungkan ke ground atau dibiarkan (tak dihubungkan) maka pewaktuan bus

Intel yang dipilih. Pin ini memiliki pull down internal sekitar 20 kOhm.

CS (Chip Select Input)

Intinya, CS digunakan untuk aktivasi IC RTC DS12C887, Anda bisa menghubungkan

CS ke GND supaya selalu aktif, atau bisa melalui salah satu pin dari mikrokontroler

yang digunakan, jika ada beberapa piranti pada modul aplikasi Anda, sehingga kita

bisa melakukan aktivasi secara manual di dalam program. Saat Vcc berada dibawah

4.25 volt, maka DS12C887, secara internal, akan menahan akses siklus bus dengan

cara menon-aktifkan masukan CS. Aksi ini akan melindungi data jam real time dan

isi dari RAM selama terjadi gangguan tegangan.

AS (Address Strobe)

Perubahan dari 0 ke 1 pada AS digunakan untuk menghapus alamat sebelumnya.

Sedangkan perubahan dari 1 ke 0 akan menyebabkan jalur AD0-AD7 dianggap

sebagai alamat memori DS12C887. Perintah akses (apakah baca atau tulis) harus

dikirim bersamaan dengan proses ini.

R/W (Read/Write Input)

Pin R/W memiliki 2 mode operasi.

MOT dihubungkan ke Vcc, Pewaktuan bus Motorola

R/W=HIGH dan DS=HIGH, maka terjadi siklus baca.

R/W=LOW dan DS=HIGH, maka terjadi siklus tulis.


MOT dihubungkan ke GND, Pewaktuan Bus Intel

R/W aktif LOW, diberi nama WR = WE (write enable) pada RAM-RAM umum.

DS (Data Strobe atau Masukan Baca)

Pin DS/RD memiliki 2 mode operasi.

MOT dihubungkan ke Vcc, Pewaktuan bus Motorola

DS digunakan sebagai Data strobe,

Berkaitan dengan proses baca/tulis

MOT dihubungkan ke GND, Pewaktuan Bus Intel

DS/RD aktif LOW sebagai pin RD sama seperti pada RAM-RAM umum

RESET (Reset Input)

Pin RESET tidak berpengaruh terhadap jam, kalender atau RAM. Pada saat

penyalaan RTC, pin RESET dapat dijaga LOW untuk beberapa saat untuk

menstabilkan catu daya. Lamanya waktu pin RESET diberikan low tergantung dari

aplikasi yang digunakan. Akan tetapi jika reset digunakan saat power up (penyalaan),

waktu RESET dijaga low harus melebihi 200 ms untuk meyakinkan bahwa timer

internal dari RTC untuk penyalaan telah cukup.

IRQ (Interrupt Request Output)

Pin IRQ adalah keluaran active low dari RTC 12C887 yang digunakan sebagai

masukan interupsi pada prosessor. Keluaran IRQ tetap low selama selama bit status

menyebabkan interupsi terjadi dan bit yang berhubungan yaitu interrupt-enable di-set.

Untuk menghapus interupsi biasanya dilakukan dengan membaca register C. Pin

RESET juga menghapus interupsi yang dilakukan atau yang belum terjadi (pending).

Ketika tidak terjadi interupt maka level IRQ berada pada kondisi high impedance.
Beberapa peralatan interupsi dapat dihubungkan dengan IRQ bus. Bus IRQ adalah

keluaran open drain dan memerlukan tambahan resistor pull-up.

SQW (Square Wave Output)

Pin SQW dapat mengeluarkan sinyal kotak, dari satu sampai 13 pembagian yang

disediakan oleh 15 buah tingkat pembagi (divider) internal dari RTC. Frekuensi dari

SQW dapat dipilih dengan memprogram register A seperti pada tabel. Sinyal SQW

dapat dihidupkan dan dimatikan dengan mengatur bit SQWE pada register B. Sinyal

SQW tidak hidup ketika VCC dibawah 4,25 volt.

GND, Vcc

Merupakan pin untuk atu daya RTC. Vcc diberikan input +5volt. Ketika tegangan 5

volt diberikan dalam batas yang normal, RTC bebas diakses dan data dapat ditulis

atau dibaca. Sedangkan ketika Vcc dibawah 4.25 volt, maka proses baca dan tulis

tidak dapat dilakukan. Akan tetapi, proses pewaktu (timekeeping) tetap dilakukan

oleh RTC tanpa dipengaruhi oleh tegangan masukan yang rendah. Saat Vcc turun

dibawah 3 volt, catu daya untuk RAM dan pewaktu dipindahkan ke internal lithium

batery yang terdapat pada RTC. Fungsi pewaktu dari RTC memiliki akurasi ± 1 menit

per bulan pada suhu 250 C walaupun tanpa adanya catu pada Vcc.
APLIKASI

Contoh Rangkaian ke mikrokontroler AT89 (plus rangkaian komunikasi serial):

Dan sekarang ke contoh program, sengaja saya gunakan bahasa tingkat tinggi -

BASIC, karena rumitnya protokol komunikasi I2C jika diimplementasikan

menggunakan bahasa Assembly. Baik…. Tujuannya adalah sistem menanggapi

perintah “t” untuk menampilkan informasi jam, dan “d” untuk menampilkan

informasi tanggal melalui terminal serial komputer (bisa menggunakan

HyperTerminal atau lain yang sejenisnya).

Okey, let’s get started…

KIta awali dengan beberapa definisi atau inisialisasi program…

$regfile = "89s8252.dat"

$crystal = 11059200

$baud = 9600

Keterangan:
$regfile digunakan untuk mendefinisikan mikrokontroler yang digunakan, yaitu

89s8252;

$crystal kita gunakan untuk mendefinisikan frekuensi kristal yang terpasang pada

rangkaian kita, dan ini penting banget soalnya akan menentukan proses kompilasi

perintah-perintah I2C yang terkait. Jika Anda salah menuliskan angkanya atau angka

yang ditulis tidak sama dengan kristal yang terpasang di rangkaian;

$baud digunakan untuk menentukan kecepatan komunikasi serial, yaitu 9600 bps,

Anda bisa mengubah untuk kecepatan yang lain.

Selanjutnya, kita definisikan beberapa variabel untuk kebutuhan pemrograman:

Dim Reg_sec As Byte , Reg_min As Byte , Reg_hour As Byte

Dim Num_hour As Byte , Num_min As Byte , Num_sec As Byte

Dim Reg_date As Byte , Reg_month As Byte , Reg_year As Byte

Dim Num_date As Byte , Num_month As Byte , Num_year As Byte

Dim Masuk As String * 1

Keterangan:

Reg_sec, Reg_min, dan Reg_hour merupakan variabel-variabel 8-bit atau 1 byte

yang digunakan untuk menyimpan hasil pembacaan RTC DS1307 yang masing-

masing untuk data detik, menit dan jam;

Reg_date, Reg_month, dan Reg_year merupakan variabel-variabel 8-bit atau 1 byte

yang digunakan untuk menyimpan hasil pembacaan RTC DS1307 yang masing-

masing untuk data tanggal, bulan dan tahun;

Num_sec, Num_min, dan Num_hour merupakan variabel-variabel 8-bit atau 1 byte

yang digunakan untuk menyimpan hasil konversi BCD (pembacaan RTC) ke desimal,
yang akan dikirim melalui komunikasi serial, masing-masing untuk detik, menit, dan

jam;

Num_date, Num_month, dan Num_year merupakan variabel-variabel 8-bit atau 1

byte yang digunakan untuk menyimpan hasil konversi BCD (pembacaan RTC) ke

desimal, yang akan dikirim melalui komunikasi serial, masing-masing untuk tanggal,

bulan, dan tahun;

Masuk sebagai variabel untuk menyimpan sebuah karakter (string * 1) kiriman dari

port serial, yang diterjemahkan hanya “t” dan “d”, masing-masing untuk perintah

baca jam dan baca tanggal.

Langkah berikutnya adalah mendefinisikan jalur atau pin dari mikrokontroler ke

RTC-nya (DS1307):

'------------------------------------------

' konfigurasi bus I2C

Config Scl = P2.0

' jalur untuk clock I2C

Config Sda = P2.1

' jalur untuk data I2C

'-------------------------------------------

Keterangan:

Hanya 2 kabel utama (selain menyamakan GND - ground) yang digunakan untuk

komunikasi dengan mikrokontroler, yaitu SCL dan SDA (perhatikan diagram pin-

nya);
SCL (serial clock) dihubungkan dengan P2.0, sedangkan SDA (serial data)

dihubungkan dengan P2.1.

Kemudian kita definisikan beberapa konstanta yang berkaitan dengan alamat-alamat

register di dalam DS1307 (silahkan merujuk datasheet DS1307 (PDF):

' perintah penulisan

Const Ds1307w = &HD0

' perintah pembacaan

Const Ds1307r = &HD1

' alamat register DS1307 yg berhubungan dengan jam

Const Sec_addmap = &H00

Const Min_addmap = &H01

Const Hour_addmap = &H02

' alamat register DS1307 yg berhubungan dengan tanggal

Const Date_addmap = &H04

Const Month_addmap = &H05

Const Year_addmap = &H06

Keterangan:

Instruksi atau perintah yang digunakan untuk penulisan data ke RTC DS1307 adalah

D0h, sedangkan untuk pembacaan D1h, masing-masing disimpan ke dalam variabel

DS1307w dan DS1307r;

Alamat-alamat yang berhubungan dengan jam untuk detik, menit dan jam, masing-

masing di 00h, 01h dan 02h;


Alamat-alamat yang berhubungan dengan jam untuk tanggal, bulan dan tahun,

masing-masing di 04h, 05h dan 06h.

Program utamanya melakukan menunggu masukan port serial, semua karakter

diterima, tetapi hanya huruf “t” (huruf kecil), dan “d” diterjemahkan masing-masing

untuk “baca jam”, dan “baca tanggal”. Selain kedua perintah tersebut, mikrokontroler

akan mengirimkan “er” sebagai tanda salah kirim perintah. Selain itu akan dikirim

data jam atau tanggal, perhatikan potongan program utamanya berikut ini

(pengulangan menggunakan DO LOOP, penerjemahan menggunakan SELECT

CASE):

Do

Input Masuk

Select Case Masuk

Case "t" : Call Read_time

Print Num_hour ; ":" ; Num_min ; ":" ; Num_sec

Case "d" : Call Read_date

Print Num_date ; "/" ; Num_month ; "/" ; Num_year

Case Else

Print "er"

End Select

Loop

End

Perhatikan pada program utama. Terdapat dua subrutin: (1) Read_time digunakan

untuk membaca data dan (2) Read_date untuk membaca tanggal…


'-=-=-=-=-=-=-=-=-=-=-=-=-=

Sub Read_time

'-=-=-=-=-=-=-=-=-=-=-=-=-=

' Read Clock Data

I2CStart

' Generate start

I2CWbyte Ds1307w

' Slave address

I2CWbyte Sec_addmap

' Address of SECONDS REG

I2Cstop

' Generate Stop

I2Cstart

' Repeated start

I2CWbyte Ds1307r

' Slave address (read)

I2CRbyte Reg_sec , Ack

I2CRbyte Reg_min , Ack

I2CRbyte Reg_hour , Nack

I2CStop

' Generate Stop

' reg_hour.6 =1(12 hrmode), if =0 (24 hourmode)

If Reg_hour.6 = 1 Then
Reg_hour = Reg_hour And &B00011111

Else

Reg_hour = Reg_hour And &B00111111

End If

'=-=-=-=-=-=-=-=-=-=-=-

' Reg_hour = Reg_hour And &B00111111

' remove 12/24 and am/pm bits

' set numeric variables

Num_hour = Makedec(reg_hour)

Num_min = Makedec(reg_min)

Num_sec = Makedec(reg_sec)

End Sub

Keterangan:

Ini merupakan subrutin Read_time yang digunakan untuk membaca jam;

Proses pembacaan jam dan tanggal pada dasarnya sama saja, diawali dengan (lihat

listing programnya) inisialisasi I2Start, kemudian dilanjutkan dengan I2CWByte

DS1307w (menuliskan perintah atau instruksi);

Kemudian diikuti dengan menuliskan alamat register detiknya: I2CWByte

Sec_addmap dan dihentikan dengan I2CStop;

Langkah selanjutnya adalah mulai membaca dari data detik, diawali dengan I2Cstart

(lagi, awal pembacaan data) kemudan perintah membaca dikirimkan ke RTC

menggunakan instruksi I2CWbyte DS1307r;


Kemudian baru data detik, menit dan jam-nya dibaca berturut-turut menggunakan

perintah I2CRbyte Reg_sec, Ack untukmembaca data detik, Ack digunakan untuk

indikator masih ada data yang lain perlu dibaca (kebalikannya adalah NAck). Dan

berturut-turut membaca data menit (I2CRbyte Reg_min, Ack), dan detik (I2CRbyte

Reg_hour, NAck), NAck artinya tidak ada lagi data yang perlu dibaca, jangan lupa

di-stop;

Untuk proses normalisasi terhadap mode jam, apakah mode 12 jam atau 24 jam,

digunakan pengecekan pada bit-6 di Reg_hour;

Langkah terakhir adalah merubah hasil pembacaan yang masih dalam format BCD ke

decimal melalui instruksi Makedec();

Untuk subrutin baca data tanggal sebagai berikut:

'-=-=-=-=-=-=-=-=-=-=-=-=-=

Sub Read_date

'-=-=-=-=-=-=-=-=-=-=-=-=-=

' Read Clock Data

I2cstart

' Generate start

I2cwbyte Ds1307w

' Slave address

I2cwbyte Date_addmap

' Address of SECONDS REG

I2cstop

' Generate Stop


I2cstart

' Repeated start

I2cwbyte Ds1307r

' Slave address (read)

I2crbyte Reg_date , Ack

I2crbyte Reg_month , Ack

I2crbyte Reg_year , Nack

I2cstop

' Generate Stop

' set numeric variables

Num_date = Makedec(reg_date)

Num_month = Makedec(reg_month)

Num_year = Makedec(reg_year)

End Sub

Contoh tampilan running program di mikrokontroler, perhatikan hanya “t” dan “d”

saja yang diterjemahkan, perintah atau huruf lain ditanggapi dengan “er”: