📄 ds1302.c
字号:
#include "iom32.h"
//#include "includes.h"
#define DS1302_C
unsigned char bflag;
unsigned char bpm;
unsigned char get_hours(void)
{
unsigned char i;
unsigned char R_Byte;
unsigned char TmpByte;
reset();
write(0x85);
ddr_set_io();
R_Byte = 0x00;
prt_clear_io();
ddr_clear_io();
for(i=0;i<4;i++)
{
TmpByte=0;
if((pinp&(1<<io)))
TmpByte=1;
TmpByte<<=7;
R_Byte>>=1;
R_Byte|=TmpByte;
prt_set_clk();
delay_nus(2);
prt_clear_clk();
delay_nus(2);
}
bflag=0;
if((pinp&(1<<io)))
bflag=1;
prt_set_clk();
delay_nus(2);
prt_clear_clk();
delay_nus(2);
bpm=0;
if((pinp&(1<<io)))
bpm=1;
prt_set_clk();
delay_nus(2);
prt_clear_clk();
delay_nus(2);
prt_clear_rst();
prt_clear_clk();
R_Byte>>=4;
return R_Byte;
}
unsigned char readbyte(unsigned char w_byte)
{
unsigned char temp;
reset();
write(w_byte);
temp=read();
prt_clear_rst();
prt_clear_clk();
return temp;
}
void writebyte(unsigned char w_byte, unsigned char w_2_byte)
{
reset();
write(w_byte);
write(w_2_byte);
prt_clear_rst();
prt_clear_clk();
}
void reset(void) //设置引脚
{
ddr_set_rst();
prt_clear_clk();
prt_clear_rst();
prt_set_rst();
}
void write(unsigned char W_Byte)
{
unsigned char i;
DDRC=0xFF;
for(i=0;i<8;i++)
{
prt_clear_io();
if(W_Byte&0x01)
{
prt_set_io();
}
prt_set_clkk();
delay_nus(1); //delay_nus(2);
prt_clear_clk();
delay_nus(1); //delay_nus(2);
W_Byte>>=1;
}
}
unsigned char read(void) //读取1302
{
unsigned char i;
unsigned char R_Byte;
unsigned char R_Byte2;
unsigned char TmpByte;
ddr_set_io();
R_Byte=0x00;
R_Byte2=0x00;
prt_clear_io();
ddr_clear_io();
for(i=0;i<4;i++) //get the first 4 bits
{
TmpByte=0;
if((pinp&(1<<io)))
{
TmpByte=1;
TmpByte=0x80;
}
//TmpByte<<=7;
R_Byte=(R_Byte>>1); //R_Byte>>=1;
R_Byte|=TmpByte;
prt_set_clk();
delay_nus(1); //delay_nus(2);
prt_clear_clk();
delay_nus(1); //delay_nus(2);
}
for(i=0;i<4;i++)
{
TmpByte=0;
if((pinp&(1<<io)))
{
TmpByte=1;
TmpByte=0x80;
}
//TmpByte<<=7;
R_Byte2=(R_Byte2>>1);//R_Byte2>>=1;
R_Byte2|=TmpByte;
prt_set_clk();
delay_nus(1); //delay_nus(2);
prt_clear_clk();
delay_nus(1);//delay_nus(2);
}
R_Byte>>=4;
R_Byte2>>=4;
R_Byte=(R_Byte2*10)+R_Byte;
return R_Byte;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -