/***發送一個字節***/
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’ ;低 |