Partner WFG, 2FG, 1FG – CELOVIT OPIS STROJNE OPREME
7. URA REALNEGA ČASA (MM58167A)
=====================================
National Semiconductor MM58167A je ura realnega časa z lastnim oscilatorjem 32,768 kHz. Na računalniku Partner hrani čas in datum v BCD obliki ter podpira budilni alarm in 8 bajtov trajnega pomnilnika (NVRAM). Čip je preslikan na priključke 0xA0–0xBF.
7.1 Časovni registri (0xA0–0xA7)
| Priključek | Dec | Opis | Smer | Opomba |
0xA0 | 160 | 1/1000 sekunde | Vhod | BCD, samo branje |
0xA1 | 161 | 1/100 sekunde | Vhod | BCD, samo branje |
0xA2 | 162 | Sekunde | V/I | BCD (00–59) |
0xA3 | 163 | Minute | V/I | BCD (00–59) |
0xA4 | 164 | Ure | V/I | BCD (00–23) |
0xA5 | 165 | Dan v tednu | V/I | 0 = nedelja |
0xA6 | 166 | Dan v mesecu | V/I | BCD (01–31) |
0xA7 | 167 | Mesec | V/I | BCD (01–12) |
7.2 NVRAM in nadzorni registri (0xA8–0xBF)
| Priključek | Dec | Opis | Smer | Opomba |
0xA9 | 169 | Leto (dve cifri) | V/I | Trajno v NVRAM |
0xB0 | 176 | Stanje prekinitev | Vhod | Zastavice IRQ |
0xB1 | 177 | Nadzor prekinitev | Izhod | Omogoči / onemogoči IRQ |
0xB2 | 178 | Ponastavi števec | Izhod | Zapiši 0 za ponastavitev |
0xB3 | 179 | Ponastavi zastavice NVRAM | Izhod | |
0xB4 | 180 | Register stanja | Vhod | Bit 0: ura teče |
0xB5 | 181 | Zaženi uro | Izhod | Zapiši 0xFF za zagon |
0xBF | 191 | Preizkus čipa | V/I | Samo za testiranje |
Partner WFG, 2FG, 1FG – CELOVIT OPIS STROJNE OPREME
7.3 Primeri
Primer: Branje časa iz RTC
beri_cas:
; Počakaj, da ura ni ravno v prehodu sekunde
in a, (#0xB4) ; Preberi register stanja
bit 0, a ; Bit 0: ura teče normalno
jr z, beri_cas ; Ponovi, če ni stabilna
; Preberi ure, minute in sekunde (BCD)
in a, (#0xA4) ; Ure (BCD)
ld (cas_ure), a
in a, (#0xA3) ; Minute (BCD)
ld (cas_minute), a
in a, (#0xA2) ; Sekunde (BCD)
ld (cas_sekunde), a
ret
cas_ure: .db 0
cas_minute: .db 0
cas_sekunde:.db 0
Primer: Nastavitev ure na 12:00:00
nastavi_cas:
; Ustavi uro pred pisanjem
ld a, #0x00
out (#0xB5), a ; Ustavi uro (GO = 0)
; Ponastavi interne števce
ld a, #0x00
out (#0xB2), a ; Ponastavi števec
; Zapiši čas
ld a, #0x12 ; 12 ur (BCD)
out (#0xA4), a
ld a, #0x00 ; 00 minut (BCD)
out (#0xA3), a
ld a, #0x00 ; 00 sekund (BCD)
out (#0xA2), a
; Zaženi uro
ld a, #0xFF
out (#0xB5), a ; Zaženi uro (GO = 0xFF)
ret