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;
	}