亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码
標題:
請大家幫忙看看這段程序,DS1302的初始化有什么問題
[打印本頁]
作者:
nivans
時間:
2015-9-1 15:30
標題:
請大家幫忙看看這段程序,DS1302的初始化有什么問題
#include <reg52.h>
#include <intrins.h>
typedef signed char int8;
typedef signed int int16;
typedef signed long int32;
typedef unsigned char uint8;
typedef unsigned int uint16;
typedef unsigned long uint32;
/*---------------------------------------------
/* DS1302 Read Byte
/*-------------------------------------------*/
uint8 ReadByte()
{
uint8 i,tmp = 0x00;
io = 1; //IO 置1
for(i = 0; i < 8 ; i ++)
{
if(io) tmp|=0x80;
sclk = 1 ;
sclk = 0;
tmp >>= 1;
}
return tmp;
}
/*---------------------------------------------
DS1302 WriteByte()
--------------------------------------------*/
void WriteByte(uint8 dat)
{
uint8 i;
for(i = 0; i < 8 ; i ++)
{
io = (bit)(dat & 0x01);
sclk = 0;
sclk = 1;
dat >>= 1;
}
}
/*---------------------------------------------
/* DS1302 SingleRead
/*-------------------------------------------*/
uint8 SingleRead(uint8 addr)
{
uint8 tmp;
cs = 0;
sclk = 0;
cs = 1;
WriteByte(addr);
tmp = ReadByte();
sclk = 0;
cs = 0;
return tmp;
}
/*----------------------------------------------
/* DS1302 SingleWrite
/---------------------------------------------*/
void SingleWrite(uint8 addr,uint8 dat)
{
cs = 0;
sclk = 0;
cs = 1;
WriteByte(addr);
WriteByte(dat);
sclk = 0;
cs = 0;
}
/*-----------------------------------------------
/* DS1302 GetTime
/*---------------------------------------------*/
void GetTime()
{
uint8 tmp;
tmp = SingleRead(0x81);
}
/*-----------------------------------------------
/* DS1302 INIT
/*---------------------------------------------*/
void ds1302_Init(void)
{
uint8 code DTime [] = {0x05,0x05,0x05,0x31,0x08,0x01,0x15};
uint8 i,addr = 0x80;
cs = 0; //片選
sclk = 0; //時鐘線
if((SingleRead(0x81) & 0x80) == 0x80)
{
SingleWrite(0x8e,0x00);
for(i = 0; i < 8; i ++)
{
SingleWrite(addr,DTime[i]);
addr += 2;
}
SingleWrite(0x8e,0x80);
}
}
如果初始化程序沒加判斷語句的話能正常初始化時間并讀取,但是如果加了判斷語句,讀出來的數據全是0。
作者:
王朗的誘惑
時間:
2015-9-2 21:31
uint8 ReadByte()函數里for里面改成這個順序試試:
sclk = 0;
tmp >>= 1;
if(io) tmp|=0x80;
sclk = 1 ;
作者:
nivans
時間:
2015-9-4 16:55
王朗的誘惑 發表于 2015-9-2 21:31
uint8 ReadByte()函數里for里面改成這個順序試試:
sclk = 0;
tmp >>= 1;
謝謝,已經弄好了。
歡迎光臨 (http://www.denmoz.com/bbs/)
Powered by Discuz! X3.1