当前位置:首页 > 单片机 > 单片机
[导读]/************************************************************ 实验名称:时钟芯片DS12C887驱动程序 晶振:内部 8M接线方法: 1.PD口接DS12C887数据I/O口 2.PA口接DS12C887控制口使用说明:本程序能够对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;
}


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭