时钟芯片DS12C887驱动程序
扫描二维码
随时随地手机看文章
/************************************************************
实验名称:时钟芯片DS12C887驱动程序
晶振:内部 8M
接线方法:
1.PD口接DS12C887数据I/O口
2.PA口接DS12C887控制口
使用说明:
本程序能够对DS12C887进行读写操作
**************************************************************/
#include
#include
#define uchar unsigned char
#define CS_H PORTA|=BIT(PA5)
#define CS_L PORTA&=~BIT(PA5)
#define AS_H PORTA|=BIT(PA4)
#define AS_L PORTA&=~BIT(PA4)
#define R_H PORTA|=BIT(PA3)
#define W_L PORTA&=~BIT(PA3)
#define DS_H PORTA|=BIT(PA2)
#define DS_L PORTA&=~BIT(PA2)
void delay(int k) //延时
{
int i;
for(i=0;i;
}
void init_ds12887() //初始化DS12C887
{
DDRA=0xff; //控制口
DDRD=0xff; //数据口
delay(10);
R_H ;
delay(10);
DS_H;
delay(10);
DS_L;
delay(10);
AS_L;
delay(10);
AS_H;}
void write_ds12887(uchar addr,uchar data)//向DS12C887写入数据
{
init_ds12887();
PORTD=addr;
CS_L;
delay(10);
AS_L;
delay(10);
W_L ;
delay(10);
DS_H;
PORTD=data;
delay(10);
DS_L;
delay(10);
AS_H;
delay(10);
CS_H;
}
uchar read_ds12887(uchar addr)//从DS12C887读出数据
{
uchar data;
init_ds12887();
CS_L;
delay(10);
PORTD=addr;
AS_L;
delay(10);
R_H ;
PORTD=0x00;
DDRD=0x00;
delay(10);
DS_H;
delay(10);
data=PIND;
return data;
DS_L;
delay(10);
AS_H;
delay(10);
CS_H;
}