📄 ds12887.c
字号:
//===
#define time_sec 0x00 //秒时钟寄存器
#define time_secalm 0x01 //秒时钟闹铃寄存器
#define time_min 0x02 //分时钟寄存器
#define time_minalm 0x03 //分时钟闹铃寄存器
#define time_hour 0x04 //时时钟寄存器
#define time_houralm 0x05 //时时钟闹铃寄存器
#define time_data 0x06 //日期寄存器
#define time_week 0x07 //星期寄存器
#define time_month 0x08 //月寄存器
#define time_year 0x09 //年寄存器
#define time_A 0x0A //ds12887寄存器A
#define time_B 0x0B //ds12887寄存器B
#define time_C 0x0C //ds12887寄存器C
#define time_D 0x0D //ds12887寄存器D
#define AS_DDR 0X04
#define AS_PORT 0X04
#define CS_DDR 0x01
#define CS_PORT 0x01
#define DS_DDR 0x10
#define DS_PORT 0x10
#define RW_DDR 0x08
#define RW_PORT 0x08
#define AD_DDR DDRD //AD(地址/数据服用线)的输入/输出控制
#define AD_PORT PORTD //AD(地址/数据服用线)的输出电平控制
#define AD_PIN PIND //AD(地址/数据服用线)的输入电平控制
//=============================
void ds12887_write(volatile uchar address,volatile uchar writeData)
{
DDRB|=AS_DDR ;
PORTB&=~AS_PORT;
DDRB|=DS_DDR ;
PORTB&=~DS_PORT;
DDRB|=RW_DDR ;
PORTB&=~RW_PORT ;
DDRB|=CS_DDR ;
PORTB|=CS_PORT ;
PORTB|=DS_PORT ;
PORTB|=RW_PORT ;
PORTB&=~CS_PORT ;
AD_DDR = 0xFF;
AD_PORT = address;
PORTB|=AS_PORT ;
delay_ms(1);
PORTB&=~AS_PORT;
delay_ms(1);
PORTB&=~RW_PORT ;
AD_DDR = 0Xff;
AD_PORT = writeData;
//PORTB&=~RW_PORT ;
delay_ms(2);
PORTB|=RW_PORT ;
PORTB|=CS_PORT ;
PORTB|=AS_PORT ;
}
uchar ds12887_read(volatile uchar address)
{
uchar temp;
DDRB|=AS_DDR ;
PORTB&=~AS_PORT;
DDRB|=DS_DDR ;
PORTB&=~DS_PORT;
DDRB|=RW_DDR ;
PORTB&=~RW_PORT ;
DDRB|=CS_DDR ;
PORTB|=CS_PORT ;
PORTB|=DS_PORT ;
PORTB|=RW_PORT;
PORTB&=~CS_PORT ;
AD_DDR = 0XFF;
AD_PORT = address; //发送地址
PORTB|=AS_PORT ;
delay_ms(1);
PORTB&=~AS_PORT;
delay_ms(2);
PORTB&=~DS_PORT;
AD_DDR = 0X00;
AD_PORT = 0XFF; //高阻态模式
temp = AD_PIN;
PORTB|=DS_PORT ;
PORTB|=CS_PORT ;
PORTB|=AS_PORT ;
return (temp);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -