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čekDecOpisSmerOpomba
0xA01601/1000 sekundeVhodBCD, samo branje
0xA11611/100 sekundeVhodBCD, samo branje
0xA2162SekundeV/IBCD (00–59)
0xA3163MinuteV/IBCD (00–59)
0xA4164UreV/IBCD (00–23)
0xA5165Dan v tednuV/I0 = nedelja
0xA6166Dan v mesecuV/IBCD (01–31)
0xA7167MesecV/IBCD (01–12)

7.2   NVRAM in nadzorni registri (0xA8–0xBF)

PriključekDecOpisSmerOpomba
0xA9169Leto (dve cifri)V/ITrajno v NVRAM
0xB0176Stanje prekinitevVhodZastavice IRQ
0xB1177Nadzor prekinitevIzhodOmogoči / onemogoči IRQ
0xB2178Ponastavi števecIzhodZapiši 0 za ponastavitev
0xB3179Ponastavi zastavice NVRAMIzhod 
0xB4180Register stanjaVhodBit 0: ura teče
0xB5181Zaženi uroIzhodZapiši 0xFF za zagon
0xBF191Preizkus čipaV/ISamo 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