ย
Microcontroller Kits
Simple Mikrokontroller 89s51 Trainer
Standart
Mikrokontroller 89s51 Trainer
Super Mikrokontroller Trainer 89s51
ย
ย
ย
ย
Address Map dari RTC
RTC mempunyai RAM internal didalamnya, dalam memori tersebut terbagi menjadi beberapa register-register yang mempunyai fungsi dalam pengontrolan maupun pengambilan data RTC. Agar tidak terjadi kesalahan dalam pengontrolan maupun pengambilan data, peta alamat dari masing-masing register harus jelas.
Address map dari RTC terdiri dari 113 byte RAM yg dapat digunakan oleh pengguna RTC, 11 byte RAM yang berisikan data RTC berupa waktu, kalender dan alarm, dan 4 byte yang digunakan untuk kontrol dan status. Keseluruhan 128 byte ini dapat ditulis atau dibaca secara langsung kecuali pada keadaan berikut:
1. Register C dan D adalah read-only.
2. Bit ke-7 dari register A adalah read-only.
3. Bit atas dari byte detik adalah read-only.
Gambar 14.2. Peta Alamat RTC
Waktu, Kalender dan Alarm
Informasi waktu dan kalender diperoleh dengan membaca byte memori yang sesuai. Waktu, kalender dan alarm di-set atau diinisialisasi dengan menulis ke byte RAM yang sesuai. Isi dari kesepuluh data kalender, waktu dan alarm dapat digunakan dalam mode biner atau BCD (Binary-Coded Decimal). Sebelum mengakses register kalender, waktu dan alarm, SET bit pada register B harus ditulis dengan level logika yang sesuai agar tidak mengganggu proses update yang dilakukan oleh RTC. Kesemua data kalender, waktu dan alarm harus menggunakan mode data yang sma (biner atau BCD), yaitu dengan cara menulis pada register B pada bit DM(Data Mode). Sekali di inisialisasi maka RTC akan terus menggunakan mode data yang dipilih sebelumnya. Tabel berikut menunjukkan mode data dari kalender, waktu dan alarm baik dalam mode biner atau BCD.
Tabel 14.2. Tabel data mode waktu, kalender dan alarm
Register Kontrol RTC
RTC 12C887A mempunyai 4 buah register kontrol yang dapat diakses setiap saat, walaupun pada saat RTC melakukan update cycle.
Register A
BIT 7 | BIT 6 | BIT 5 | BIT 4 | BIT 3 | BIT 2 | BIT 1 | BIT 0 |
UIP | DV2 | DV1 | DV0 | RS3 | RS2 | RS1 | RS0 |
UIP โ Update in progress adalah status bit yang dapat dimonitor, merupakan bit read only dan tidak dipengaruhi oleh reset. Ketika bit UIP 1, proses update akan segera berlangsung. Ketika UIP 0, proses update tidak akan terjadi sekurangnya 244?s. Informasi kalender, waktu dan alarm yang ada pada RAM akan dapat diakses secara penuh ketika bit UIP nol.
DV2, DV1, DV0 โ Ketiga bit ini digunakan untuk menghidupkan atau mematikan osilator dan me-reset rantai perhitungan. Pola 010 adalah satu-satunya kombinasi yang akan menghidupkan osilator dan menyebabkan RTC dapat menyimpan waktu. Pola 11x akan menghidupkan osilator tapi menahan rantai perhitungan dalam kondisi reset.
RS2, RS2, RS1, RS0 โ Keempat bit ini akan memilih frekuensi atau mematikan pulsa kotak pada pin SQW. Pin SQW dapat berfungsi juga sebagai periodic interrupt. Keempat bit ini dapat dibaca/tulis dan tidak dipengaruhi oleh RESET. Untuk mengaktifkannya, dapat dilakukan sebagai berikut :
1. Mengaktifkan interupt dengan bit PIE.
2. Mengaktifkan keluaran SQW dengan bit SQWE.
3. Mengaktifkan keduanya dengan waktu dan frekuensi yang sama.
4. Tidak mengaktifkan keduanya.
Register B
BIT 7 | BIT 6 | BIT 5 | BIT 4 | BIT 3 | BIT 2 | BIT 1 | BIT 0 |
SET | PIE | AIE | UIE | SQWE | DM | 24/12 | DSE |
SET โ Ketika bit SET adalah 0, proses update berfungsi normal dengan menambahkan perhitungan sekali dalam satu detik. Ketika SET ditulis menjadi 1, semua proses update dihentikan sehingga program dapat menginisialisasi byte waktu dan kalender tanpa adanya proses update yang terjadi ditengah proses inisialisasi.
PIE โ Periodic Interrupt Enable merupakan bit yang dapat dibaca/tulis yang akan menyebabkan bit Periodic Interrupt Flag (PF) pada register C mengatur pin IRQ menjadi low. Ketika bit PIE diset 1, interupt secara periodik dihasilkan dengan mengatur pin IRQ menjadi low dengan periode tertentu sesuai dengan bit RS3-RS0 (register A). Apabila PIE 0, ini akan menghalangi pengaturan pin IRQ oleh interupt periodik, tetapi bit PF masih di-set dengan periode tertentu. PIE tidak dapat dirubah secara internal oleh RTC, tetapi akan dihapus menjadi 0 pada saat RESET.
UIE โ Update Ended Interrupt merupakan bit yang dapat dibaca/tulis yang akan meng-enable Update ended Flag (UF) pada register C untuk memasukkan IRQ. Pin RESET yang di โlowโ atau bit SET yang di โhighโ akan menghapus bit UIE.
SQWE โ Ketika bit Square Wave Enable di-set menjadi 1, gelombang kotak dengan periode yang sudah ditentukan oleh bit RS3-RS0 akan dikeluarkan pada pin SQW. Ketika SQWE di-set menjadi 0, maka pin SQW tetap low. Bit SQWE dapat dibaca/tulis dan dapat dihapus oleh RESET. SQWE di-set menjadi 1 ketika Vcc dihidupkan.
DM โ Bit Data Mode (DM) mengindikasikan apakah informasi waktu dan kalender mempunyai format biner atau BCD. Bit DM di-set oleh program dengan memberikan format yang sesuai dan dapat dibaca sesuai keperluan. Bit ini tidak dapat dirubah secara internal atau oleh RESET. โ1โ pada DM menyatakan data biner sedangkan โ0โ menyatakan DM mempunyai format BCD (Binary Coded Decimal).
24/12 โ Bit ini digunakan untuk memilih mode jam, 24 atau 12. โ1โ menunjukkan mode 24-jam dan โ0โ menunjukkan mode 12-jam. Bit ini dapat dibaca/tulis dan tidak dipengaruhi secara internal atau RESET.
DSE โ Merupakan bit khusus yang digunakan untuk merubah waktu ketika terjadi perubahan musim (biasanya terjadi pada negara dengan 4 musim). Ketika di-set 1, pada hari minggu pertama pada bulan april terjadi perubahan jam dari 1:59:59 AM menjadi 3:00:00 AM. Pada hari minggu terakhir bulan oktober saat waktu menunjukkan 1:59:59 AM berubah menjadi 1:00:00 AM. Hal ini tidak terjadi ketika DSE di-set 0. Bit ini tidak dipengaruhi secara internal atau RESET.
Register C
BIT 7 | BIT 6 | BIT 5 | BIT 4 | BIT 3 | BIT 2 | BIT 1 | BIT 0 |
IRQF | PF | AF | UF |
IRQF โ Interrupt Request Flag (IRQF) bit diset menjadi 1 ketika hal berikut terjadi :
PF = PIE = 1
AF = AIE = 1
UF = UIE = 1
Contoh: IRQF = (PF*PIE) + (AF*AIE) + (UF*UIE)
Saat ketika bit IRQF adalah 1, pin IRQ menjadi โlowโ. Bit flag PF, AF, dan UF di hapus detelah register C dibaca oleh program atau ketika pin RESET โlowโ.
PF โ Periodic Interrupt Flag adalah bit read-only yang diset menjadi 1 ketika edge dideteksi pada tap yang dipilih pada rantai pembagian. Bit RS3 โ RS0 menghasilkan frekuensi periodik. PF diset menjadi 1 tanpa dipengaruhi oleh bit PIE. Ketika PF dan PIE โ1โ , sinyal IRQ aktif dan akan mengeset bit IRQF. Bit PF akan dihapus secara pembacaan software pada register C atau RESET.
AF โ โ1โ pada bit Alarm Interrupt Flag (AF) mengindikasikan waktu yang dicapai sesuai dengan waktu alarm. Jika bit AIE juga 1, pin IRQ akan menjadi low dan โ1โ akan terjadi pada bit IRQF. RESET atau pembacaan register C akan menghapus AF.
UF โ Bit Update Ended Interrupt Flag akan diset setelah tiap proses update. Ketika bit UIE diset menjadi 1, โ1โ pada UF akan menyebabkan bit IRQF menjadi 1 dan akan mengaktifkan pin IRQ. UF dihapus dengan membaca register C atau RESET.
BIT 3 sampai BIT 0 โ Bit ini tidak dipakai dan selalu bernilai 0.
Register D
BIT 7 |
BIT 6 |
BIT 5 |
BIT 4 |
BIT 3 |
BIT 2 |
BIT 1 |
BIT 0 |
VRT |
VRT โ Valid RAM Time mengindikasikan kondisi dari baterai yang dihubungkan ke pin VBAT. Bit ini tidak dapat ditulis dan selalu menjadi 1 ketika dibaca. โ0โ akan terjadi ketika baterai internal telah rusak. Bit ini tidak dipengaruhi oleh RESET.
BIT 6 sampai BIT 0 – Bit ini tidak dipakai dan selalu bernilai 0.
Proses Update
RTC 12C887 melaksanakan proses update sekali dalam satu detik walau tanpa memperhatikan bit SET pada register B. Ketika bit SET pada register B di-set menjadi 1, maka informasi waktu, kalender, dan alarm akan berhenti dan tidak akan berubah pada saat terjadi penambahan waktu, tetapi rantai perhitungan waktu akan tetap terjadi dan disimpan pada buffer internal. Hal ini akan menjaga akurasi watu dari RTC saat terjadi proses pembacaan dan penulisan. Proses update ini juga akan membandingkan byte alarm dengan waktu yang terjadi sat itu.
Ada tiga metode untuk mengakses data pada RTC yang akan menghindari akses informasi waktu yang tidak konsisten. Metode pertama adalah menggunakan update ended interrupt. Jika di enable, interupt akan terjadi tiap proses update selesai, dimana terdapat waktu 999 ms untuk membaca data waktu yang valid. Jika interupsi ini digunakan, bit IRQF pada register C harus dihapus sebelum meninggalkan proses interupsi.
Metode yang kedua adalah dengan menggunakan bit update in progress (UIP) yang terdapat pada register A yang menyatakan apakah proses update sedang berlangsung. Bit UIP akan mengeluarkan pulsa tiap satu detik. Setelah bit UIP menjadi high, maka proses update akan terjadi 244 ?s kemudian dan jika low terbaca pada bit UIP, maka pengguna mempunyai waktu 244 ?s sebelum data waktu/kalender akan berubah. Sehingga, pengguna harus menghindari proses interupsi yang menyebabkan waktu pembacaan data melebihi 244 ?s.
Gambar 14.3 Hubungan antara Update-Ended dan Periodic Interrupt
Metode yang ketiga adalah mengunakan periodic interrupt untuk menunjukkan apakah proses update sedang berlangsung. Bit UIP pada register A akan di-set high diantara pengaktifan dari bit PF pada register C. Periode interupt yang melebihi waktu tBUC akan menyebabkan data yang valid dapat dicapai pada setiap terjadinya interupsi. Pembacaan harus telah selesai dalam waktu (tPI/2 + tBUC) untuk memastikan data tidak dibaca saat proses update.
Gambar 14.6 Rangkaian interface RTC12c887
ย
ย
ย
HARDWARE
1.Target
2.Programmer
DASAR TEORI1.Organisasi Mem
1.1. Mem.Data
1.2. Mem.Prog
1.4. SFR2.Pengalamatan3.Set Instruksi
3.1.Copy Data
3.2.Aritmatika
3.3.Logika
3.4.Lompatan4.Interupsi5.Timer Counter6.Serial Kom.7.Bahasa Assemb.8.Perangkat LunakMIDE dan ISP Soft.
PERCOBAAN 1
LED
PERCOBAAN 2
SAKLAR
PERCOBAAN 3
7 Segmen
PERCOBAAN 4
LCD Character
PERCOBAAN 5
ADC
PERCOBAAN 6
DAC
PERCOBAAN 7
Keypad
PERCOBAAN 8
Motor Stepper
PERCOBAAN 9
Timer Counter
PERCOBAAN 10
Komunikasi Serial
PERCOBAAN 11
Interupsi
PERCOBAAN 12
Keyboard PC
PERCOBAAN 13
Printer Dot Matr.
PERCOBAAN 14
RTC12C887
PERCOBAAN 15
P W M
ย
ย