/***发送一个字节***/
void 1302Write(unsigned char dat)
{
unsigned char mask;
for(mask= 0x01;mask!=0;mask <<= 1) //低位在前,逐位移出
{
if((mask & dat) != 0) //首先输出该位数据
DS1302_IO = 1;
else
DS1302_IO = 0;
DS1302_CK = 1; //然后拉高时钟
DS1302_CK = 0; //在拉低时钟,完成一个位的操作
}
DS1302_IO = 1; //最后确保释放IO引脚
}
/***读取一个字节***/
unsigned char 1302Read()
{
unsigned char mask;
unsigned char dat = 0;
for(mask = 0x01;mask != 0; mask <<= 1) //低位在前,逐位读取
{
if(DS1302_IO != 0) //首先读取此时IO引脚,并设置dat中的对应位
{
dat |= mask;
}
DS1302_CK = 1; //然后拉高时钟
DS1302_CK = 0; //再拉低时钟,完成一个位的操作
}
return dat; //最后返回读到的字节数据
}
读出1302数据DATA,LCD1602 加个‘0’ , 数码管不用加‘0’
buf [0]=(DATA >> 4)+‘0’ ; 高
buf[1]=(DATA & 0X0F)+‘0’ ;低 |