LA PROGRAMMATION DU RTC (MC 146818) 

              ***********************************************
              * ecrit par PC-CODER pour PROGRAZINE le 09/97 *
              * E-mail :  pccoder@club-internet.fr          *
              ***********************************************
               Si vous avez des informations suplementaire
               ou si vous constater une erreur ecriver moi 
               ---------------------------------------------

Le RTC (Real Time Clock) est un circuit qui s'occupe de
la date ,de l'heure et de générer certaine interruption.
Il possede une RAM de 64 octets(parfois 128) qu'on peut
adresser par l'intermedaire des ports 70H et 71H .
Le RTC peut gener 3 type interruption :
- 1 interruption à chaque mise à jour de la date , c'est à dire
  à chaque seconde.
- 1 interruption alarme.
- 1 interruption periodique ,c'est une interruption qui sera
    générer à intervalle regulier.

Le port 70H est le registre d'index :

Bit 7 = 0 Autorise les NMI (Non Masquable Interrupt)
      = 1 Interdie les NMI.

Bit 6-0 = Index dans la RAM (de 0 à 63 ou 127) .

L'ecriture dans ce registre doit être suivit par la lecture
du registre de donnée (au port 71H).

Le port 71H est le registre de donnée :

Bit 7-0 = DATA

LA MEMOIRE DU RTC :

MEMOIRE  +  DESCRIPTION(CONTENU)
---------+-----------------------
   00H   |  SECONDES (actuel)
   01H   |  alarme secondes
   02H   |  MINUTE (actuel)
   03H   |  alarme minute
   04H   |  HEURE (actuel)
   05H   |  alarme heure
   06H   |  JOUR DE LA SEMAINE (1=DIMANCHE 2=LUNDI ... 7=SAMDEDI)
   07H   |  JOUR DU MOIS
   08H   |  MOIS   1=janvier ... 0Ch(ou 12H)=decembre
   09H   |  ANNEE  
   32H   |  SIECLE
---------+-------------------------------------------------------
   0AH   |  REGISTRE D'ETAT A (de l'horloge)
   0BH   |  REGISTRE D'ETAT B
   0CH   |  REGISTRE D'ETAT C
   0DH   |  REGISTRE D'ETAT D
---------+-------------------------------------------------------

LES OCTETS SUIVANT SERVENT AU BIOS :

   0EH   | OCTET DE DIAGNOSTIC
   0FH   | ETAT LORS DE L'ARRET DU SYSTEM (RESET)
   10H   | DESCRIPTION DES LECTEUR DE DISQUETTE
   11H   | RESERVE
   12H   | TYPE DES DISQUE DUR (C,D)
   13H   | RESERVE
   14H   | OCTET DE CONFIGURATION
   15H   | TAILLE DE LA MEMOIRE DE BASE en Ko(octet de poid faible)
   16H   | TAILLE DE LA MEMOIRE DE BASE en Ko(poid fort)
   17H   | TAILLE DE LA MEMOIRE ETENDU en Ko(poid faible)
   18H   | TAILLE DE LA MEMOIRE ETENDU en Ko(poid fort)
   19H   | TYPE DDUR C  (octet d'extention)
   1AH   | TYPE DDUR D  (octet d'extention)
1BH à 2DH| RESERVE (pas d'info)
   2EH   | OCTET FAIBLE DU CHECKSUM (de 10H à 2DH)
   2FH   | OCTET FORT DU CHECKSUM (de 10H à 2DH)
   30H   | TAILLE MEMOIRE ETENDU au dessus des 1Mo (octet faible)
   31H   | TAILLE MEMOIRE ETENDU au dessus des 1Mo (octet fort)
   32H   | SIECLE
   33H   | SETUP information
34H à 3FH| RESERVE(pas d'info)
---------+--------------------------------------------------------
40H à 7FH| PAS INFORMATION ?
---------+--------------------------------------------------------

DESCRIPTIN DES REGISTRE :

REGISTRE A :

Bit 7 = 0 Indique que l'heure et la date peuvent être lu.
      = 1 Indique que l'heure ou la date sont en cours de
           changement dans la memoire et ne peuvent être lu.
le bit 7 (UIP) est accessible uniquement en lecture.

Bit 6-4 = Frequence horaire (XTAL)
        = 010 => 32,768 Hz Defaut
        = les autres valeurs ???

Bit 3-0 = Selection de la vitesse pour les interruptions périodique
        = 0000 arret de l'horloge
        = 0001 XTAL diviser par 128 (256 INT / seconde)
        = 0010 XTAL /256 (128 INT/S = 1 INT toute les 7812 uS)
        = 0011 XTAL /4 (8192 INT/S = 1 INT tte les 122 uS)
        = 0100 XTAL /8 (4096 INT/S = 1 INT tte les 244 uS)
        = 0101 XTAL /16(2048 INT/S = 1 INT tte les 488 uS)
        = 0110 XTAL /32(1024 INT/S = 1 INT tte les 976,562 uS)
        = 0111 XTAL /64(512 INT/S = 1 INT tte les 1953 uS)
        = 1000 XTAL /128(256 INT/S = 1 INT tte les 3906 uS)
        = 1001 XTAL /256(128 INT/S = 1 INT tte les 7812 uS)
        = 1010 XTAL /512(64 INT/S = 1 INT tte les 15625 uS)
        = 1011 XTAL /1024(32 INT/S = 1 INT tte les 31250 uS)
        = 1100 XTAL /2048(16 INT/S = 1 INT tte les 62500 uS)
        = 1101 XTAL /4096(8 INT/S = 1 INT tte les 125 mS)
        = 1110 XTAL /8096(4 INT/S = 1 INT tte les 250 mS)
        = 1111 XTAL /16192(2 INT/s = 1 INT tte les 500 mS)
-------------------------------------------------------------------
REGISTRE B : Ce registre permet d'autoriser ou d'interdir les
             interruptions et de choisit le format de l'heure
             et de la date .

Bit 7 = 0 L'heure est actualiser toute les secondes
      = 1 Arrete l'actualisation (pour permettre d'ecrire
          une nouvelle heure ou date )

Bit 6 = 1 Permet les interruptions periodique
      = 0 Interdit les interruptions periodique

Bit 5 = 1 Permet les interruptions pour l'alarme 
      = 0 Interdit les interruption pour l'alarme 

Bit 4 = 1 Permet interruption apres UPdate de l'heure
          (toute les seconde)
      = 0 Interdit les interruptions ...

Bit 3 = 1 Permet l'activation de l'horloge pour les
           interruptions periodique.
      = 0 Deactive l'horloge des interruptions periodiques.

Bit 2 = FORMAT DE LA DATE ET DE L'HEURE
        0 = BCD
        1 = BINAIRE

Bit 1 = FORMAT DE HEURE
        0 = Format 12 heure (il n'y a pas 13,14,..,24)
        1 = Format 24 heure (de 0 à 24 H )

Bit 0 = 1 Tient compte de l'heure d'ete.
      = 0 Ne tient pas compte de l'heure d'ete
--------------------------------------------------------------------
REGISTRE C : en lecture uniquement.Quant une interruption survient
             ce registre permet de savoir quelle est le type
             d'interruption .

Bit 7 = 0 Pas d'interruption
      = 1 Indique qu'il y a une interruption
          (periodique,alarme,update heure)

Bit 6 = 0 Pas d'interruption
      = 1 Indique une interruption periodique

Bit 5 = 0 Pas d'interruption
      = 1 Indique une interruption alarme

Bit 4 = 0 Pas d'interruption
      = 1 Indique une interruption UPdate
          (de mise a jour de la date)

Bit 3-0 = ???? Pas utilisé
------------------------------------------------------------------
REGISTRE D : En lecture uniquement

Bit 7 = 0 Pile usé (à changer)
      = 1 Pile OK

Bit 6-0 = ?? Pas utilisé
------------------------------------------------------------------