Antar Muka Modul RTC-1287 dengan Modul DST-51 Real Time Clock DS1287/DS12887 DS1287/DS12887 adalah merupakan komponen utama dari modul RTC-1287 di mana IC ini berfungsi sebagai sebuah rangkaian jam digital yang tetap bekerja selama 10 tahun walaupun power supply tidak diaktifkan. Data-data waktu tersimpan dalam memori yang bersifat non volatile pada IC tersebut. Gambar 1 Register-register DS12887 (diambil dari data sheet Dallas DS12887) Register-register DS12887 DS12887 mempunyai 14 buah register yang terdiri dari 4 buah Register Kontrol dan 10 buah Register Data. Register Data sendiri terpisah menjadi register waktu dan Register Alarm seperti yang tampak pada gambar 1 di atas. Setelah Register-register Kontrol diinisial, maka data waktu ataupun alarm dapat dilihat atau diatur dengan cara mengakses register-register data tersebut. Contoh: Pengambilan data jam pada Modul RTC-1287 yang diletakkan pada alamat 6000H oleh DST-51. DPTR,#6004H x A,@DPTR Register Jam terletak di alamat 04H sedangkan modul RTC-1287 terletak di alamat 6000H maka pengambilan data jam dapat dilakukan dengan mengambil data di memori alamat 6000H + alamat register jam yaitu 6004H Register A
UIP : Bit untuk memantau Flag Update In Progress. Bila bit ini set maka Update Transfer akan segera muncul, namun bila bit ini clear maka Update transfer hanya akan muncul setelah 244 us kemudian DV0, DV1, DV2: Ketiga bit ini berfungsi untuk mengatur osilator on, off atau mereset perhitungan mundur. Kofigurasi 010 digunakan untuk mengatur osilator on, konfigurasi 11x digunakan untuk mengatur agar perhitungan mundur tertahan. RS0, RS1, RS2 dan RS3: Bit-bit ini berfungsi sebagai 15 tingkat pembagi frekwensi yang dapat digunakan untuk membangkitkan sinyal output pada pin SQW atau Periodic Interrupt Enable bit. Register B SET : Apabila bit ini clear, maka register data dapat diupdate setiap detiknya, namun apabila bit ini set, maka register data tidak dapat diupdate. Bit ini tidak akan berpengaruh terhadap kondisi RESET PIE: Periodic Interrupt Enable, sebuah bit yang membuat bit Periodic Interrupt Flag dapat membangkitkan kondisi low pada pin IRQ. 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. 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 (logika 0) SQWE: Apabila bit ini set, maka gelombang kotak dengan frekwensi yang ditentukan oleh pembagi frekwensi pada RS0 RS3 akan muncul di pin SQW. DM: DM = 1 untuk mode binary dan DM = 0 untuk data BCD pada Register Data. 24/12: Apabila bit ini set, maka waktu berjalan berdasarkan 24 jam dan sebaliknya bila bit ini clear, maka waktu berjalan berdasarkan 12 jam. DSE: Daylight Saving Enable, apabila bit ini set 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. Register C IRQF: Interrupt Request Flag, bit ini akan set apabila salah satu dari bit PF, AF dan UF set.
PF: Periodic Interrupt Flag, bit ini akan set secara periodik tergantung bit RS0. RS3. Apabila bit PIE aktif, maka kondisi set pada bit PF akan membangkitkan kondisi low pada pin IRQ. Bit ini akan clear saat pembacaan pada Register C atau kondisi RESET AF: Alarm Interrupt Flag, bit ini akan set saat waktu sesuai 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 clear saat pembacaan pada Register C atau kondisi RESET UF: Update Ended Interrupt Flag (UF) bit ini siklus update. Apabila bit UIE aktif maka kondisi set pada bit ini akan membangkitkan kondisi low pada pin IRQ. Bit ini akan clear saat pembacaan pada Register C atau kondisi RESET Register D VRT: Bit ini akan selalu berkondisi set yang menunjukkan bahwa battery lithium yang ada dalam DS12887 masih dapat bekerja dengan baik. Proses inisialisasi Register-register Kontrol ataupun pengisian Register Data dapat dilakukan dengan mudah hanya dengan mengisikan data-data tersebut ke alamatalamat register. Contoh: Pengisian Register Kontrol B dengan data 12H RegB EQU 0BH AlamatRTC1287 EQU 6000H DPTR,#AlamatRTC1287+#RegB A,#12H x @DPTR,A Hubungan RTC1287 dengan DST-51 Modul RTC-1287 hanya memerlukan jalur Data Bus (D0 D7 atau P0.0.P0.7) dan Control Bus (WR, RD dan CS) saja. Maka dengan 2 buah kabel pita 10 pin, Modul DST-51 telah dapat terhubung dengan RTC-1287 (Petunjuk lebih detail, lihat Buku Manual RTC-1287) P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 CS3 ALE P3.6 P3.7 RST RST 1 2 74LS04 P0.0/D0 P0.1/D1 P0.2/D2 P0.3/D3 P0.4/D4 P0.5/D5 P0.6/D6 P0.7/D7 CS3 ALE P3.6/WR P3.7/RD 4 5 6 7 8 9 10 11 1 13 14 15 17 18 AD0 AD1 AD2 AD3 AD4 AD5 AD6 AD7 MOT CS AS R/W DS RST DS1287 IRQ SQW 19 23
Contoh Program Program Jam Digital dengan tampilan LCD M1632 ********************************************************************* ********* * PROGRAM PENAMPIL JAM DENGAN RTC 1287 * - Menampilkan jam setiap detik ke LCD oleh DST-51 * Disain oleh: * Paulus Andi Nalwan, ST * electronic@sby.centrin.net.id * * * Kompleks Ruko Manyar Megah Indah Plaza D-22 * Ngagel Jaya Selatan * Surabaya 60284 * Phone/fax: 62-31-5020210 * ********************************************************************* ********* ;RTC-1287 Routines ;Alamat RTC harus diset pada DPTR terlebih dahulu ;Interrupt harus diaktifkan apabila ingin alarm interrupt Kalender_Display EQU 0441H ;Display_Waktu EQU 04A5H Delay_5mS HexASCII2 EQU 0180H EQU 00FAH Init_LCD EQU 237H EQU 295H PosisiAwal_LCD EQU 216H Alamat_RTC EQU 6000H RegA EQU 0AH RegB EQU 0BH RegC EQU 0CH RegD EQU 0DH Detik EQU 00H Detik_Alarm EQU 01H Menit EQU 02H Menit_Alarm EQU 03H Jam EQU 04H Jam_Alarm EQU 05H Hari EQU 06H Tanggal EQU 07H Bulan EQU 08H Tahun EQU 09H Org 2000H ;Reset Vector Ajmp Start ; Org 2003H ;External Interrupt 0 Vector i ; Org 200BH ;Timer 0 Interrupt Vector i ; Org 2013H ;External Interrupt 1 Vector i ; Org 201BH ;Timer 1 Interrupt Vector i ;
Org 2023H ;Serial Interrupt Vector i ; Start: Init_LCD DPTR,#Alamat_RTC+RegA ;Aktifkan osilator A,#20H ; x @DPTR,A ; Inc DPTR ;Update Interrupt aktif, Mode 24 Jam A,#12H ;Output BCD Data x @DPTR,A ; Loop: DPTR,#Alamat_RTC+RegC ;Periksa Flag IRQ x A,@DPTR ; ANL A,#080H ; Jnb A.7,Loop ;Tidak ada flag, loop Clr A.7 ;Ada Flag, Clear Flag x @DPTR,A ; DPTR,#Alamat_RTC ;Displaykan waktu Display_Waktu ; Ajmp Loop Display_Waktu: RET Clrscr: Push Pop Ambil_Jam: c Ambil_detik: c Ambil_Menit: Clrscr Clrscr Ambil_Jam KirimASCII_LCD A,#03AH Ambil_Menit KirimASCII_LCD A,#03AH Ambil_Detik KirimASCII_LCD A A,#00DH PosisiAwal_LCD Delay_5mS Delay_5mS A DPL,#Jam A,#00H A,@A+DPTR DPL,#detik A,#00H A,@A+DPTR DPL,#Menit
c KirimASCII_LCD: A,#00H A,@A+DPTR HexASCII2 A,B