時(shí)鐘芯片DS12C887驅(qū)動(dòng)程序
掃描二維碼
隨時(shí)隨地手機(jī)看文章
/************************************************************
實(shí)驗(yàn)名稱:時(shí)鐘芯片DS12C887驅(qū)動(dòng)程序
晶振:內(nèi)部 8M
接線方法:
1.PD口接DS12C887數(shù)據(jù)I/O口
2.PA口接DS12C887控制口
使用說明:
本程序能夠?qū)S12C887進(jìn)行讀寫操作
**************************************************************/
#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) //延時(shí)
{
int i;
for(i=0;i;
}
void init_ds12887() //初始化DS12C887
{
DDRA=0xff; //控制口
DDRD=0xff; //數(shù)據(jù)口
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寫入數(shù)據(jù)
{
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讀出數(shù)據(jù)
{
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;
}