File "ds1216.c"
Full Path: /home/analogde/www/68hc11/ds1216.c
File size: 837 bytes
MIME-type: text/plain
Charset: 8 bit
#define smart *(unsigned char volatile*) 0x2000 /* adresse de l'horloge */
void smart_access(void); /* accs avec la clef */
void smart_read(int *); /* lecture de l'horloge */
void smart_write(int *); /* criture de l'horloge */
/* code d'accs l'horloge */
const char smart_watch[]={0xC5,0x3A,0xA3,0x5C,0xC5,0x3A,0xA3,0x5C};
void
smart_access(void) /* accs avec la clef */
{
int i,n;wait(1);
for(i=0;i<=7;i++)
for(n=0;n<=7;n++)
smart=smart_watch[i]>>n;
}
void
smart_read(int *c) /* lecture de l'horloge */
{
int i,n;
for(i=0;i<=8;i++)
*(c+i)=0;
smart_access(); /* accs par la clef */
for(i=0;i<=7;i++)
for(n=0;n<=7;n++)
*(c+i) = (*(c+i)|((smart & 1)<<8))>>1;
}
void
smart_write(int *c)
{
int i,n;
smart_access(); /* accs par la clef */
for(i=0;i<=7;i++)
for(n=0;n<=7;n++)
smart=(*(c+i))>>n;
}