音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費(fèi)注冊(cè) 首頁(yè) | 行業(yè)黑名單 | 幫助
維庫(kù)電子市場(chǎng)網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

懇請(qǐng)高人看一下8051時(shí)鐘芯片ds1302程序錯(cuò)在哪里?

作者:nj21ic 欄目:單片機(jī)
懇請(qǐng)高人看一下8051時(shí)鐘芯片DS1302.html">DS1302程序錯(cuò)在哪里?
懇請(qǐng)高人幫忙看一下8051時(shí)鐘芯片DS1302.html">DS1302程序錯(cuò)在哪里讀出的數(shù)據(jù)全是0xff?

#include <reg52.h>    // Register definition file.
#include <intrins.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>

typedef unsigned CHAR uCHAR;
typedef unsigned int uint;
typedef unsigned LONG uLONG;

sbit     T_CLK      = P3^1;   /*實(shí)時(shí)時(shí)鐘時(shí)鐘線引腳 */
sbit     T_IO       = P3^2;   /*實(shí)時(shí)時(shí)鐘數(shù)據(jù)線引腳 */
sbit     T_RST      = P3^3;   /*實(shí)時(shí)時(shí)鐘復(fù)位線引腳 */


sbit  ACC0 = ACC^0;
sbit  ACC7 = ACC^7;

void   RTInputByte(uCHAR);       /* 輸入 1Byte */
uCHAR  RTOutputByte(void);       /* 輸出?1Byte */
void   W1302(uCHAR, uCHAR);
uCHAR  R1302(uCHAR);
void   Set1302(uCHAR *);         /* 設(shè)置時(shí)間 */
void   Bcd2asc(uCHAR,uCHAR *);
void   Get1302(uCHAR curtime[]); /* 讀取1302當(dāng)前時(shí)間 */

/********************************************************************

函 數(shù) 名:RTInputByte()
功    能:實(shí)時(shí)時(shí)鐘寫入一字節(jié)

***********************************************************************/
void RTInputByte(uCHAR d)
{
    uCHAR  data  i2;
    ACC = d;
    for(i2=8; i2>0; i2--)
    {
        T_IO = ACC0;           /*相當(dāng)于匯編中的 RRC */
        T_CLK = 1;
        T_CLK = 0;
        ACC = ACC >> 1;
    }
}
/********************************************************************

函 數(shù) 名:RTOutputByte()
功    能:實(shí)時(shí)時(shí)鐘讀取一字節(jié)
說(shuō)    明:從DS1302讀取1Byte數(shù)據(jù) (內(nèi)部函數(shù))
  
***********************************************************************/
uCHAR RTOutputByte(void)
{
    uCHAR  i;
    
    for(i=8; i>0; i--)
    {   
        T_IO=1;//-------------------------------------------
        ACC = ACC >>1;         /*相當(dāng)于匯編中的 RRC */
        ACC7 = T_IO;
            
                _nop_();
        T_CLK = 1;
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        T_CLK = 0;
        _nop_();
        _nop_();
        _nop_();
        _nop_();
    }
    return(ACC);
}
/********************************************************************

函 數(shù) 名:W1302()
功    能:往DS1302寫入數(shù)據(jù)
說(shuō)    明:先寫地址,后寫命令/數(shù)據(jù) (內(nèi)部函數(shù))

***********************************************************************/
void W1302(uCHAR ucAddr, uCHAR ucDa)
{
    T_RST = 0;
    T_CLK = 0;
    T_RST = 1;
    RTInputByte(ucAddr);       /* 地址,命令 */
    RTInputByte(ucDa);       /* 寫1Byte數(shù)據(jù)*/
    T_CLK = 1;
    T_RST = 0;
}
/********************************************************************

函 數(shù) 名:R1302()
功    能:讀取DS1302某地址的數(shù)據(jù)
說(shuō)    明:先寫地址,后讀命令/數(shù)據(jù) (內(nèi)部函數(shù))
  
***********************************************************************/
uCHAR R1302(uCHAR ucAddr)
{
    uCHAR  ucData;
    T_RST = 0;
    T_CLK = 0;
    T_RST = 1;
    RTInputByte(ucAddr);             /* 地址,命令 */
    ucData = RTOutputByte();         /* 讀1Byte數(shù)據(jù) */
    T_CLK = 1;
    T_RST = 0;
    return(ucData);
}
/********************************************************************

函 數(shù) 名:BurstW1302T()
功    能:往DS1302寫入時(shí)鐘數(shù)據(jù)(多字節(jié)方式)
說(shuō)    明:先寫地址,后寫命令/數(shù)據(jù)

***********************************************************************/
void BurstW1302T(uCHAR *pWClock)
{
    uCHAR i;
    W1302(0x8e,0x00);         /* 控制命令,WP=0,寫操作?*/
    T_RST = 0;
    T_CLK = 0;
    T_RST = 1;
    RTInputByte(0xbe);        /* 0xbe:時(shí)鐘多字節(jié)寫命令 */
    for (i = 8; i>0; i--)     /*8Byte = 7Byte 時(shí)鐘數(shù)據(jù) + 1Byte 控制*/
    {
        RTInputByte(*pWClock); /* 寫1Byte數(shù)據(jù)*/
        pWClock++;
    }
    T_CLK = 1;
    T_RST = 0;
}
/********************************************************************

函 數(shù) 名:BurstR1302T()
功    能:讀取DS1302時(shí)鐘數(shù)據(jù)
說(shuō)    明:先寫地址/命令,后讀數(shù)據(jù)(時(shí)鐘多字節(jié)方式)
調(diào)    用:RTInputByte() , RTOutputByte()
入口參數(shù):pRClock: 讀取時(shí)鐘數(shù)據(jù)地址 格式為: 秒 分 時(shí) 日 月 星期 年
    
***********************************************************************/
void BurstR1302T(uCHAR *pRClock)
{
    uCHAR i;
    T_RST = 0;
    T_CLK = 0;
    T_RST = 1;
    RTInputByte(0xbf);             /* 0xbf:時(shí)鐘多字節(jié)讀命令 */
    for (i=8; i>0; i--)
    {
       *pRClock = RTOutputByte();   /* 讀1Byte數(shù)據(jù) */
       pRClock++;
    }
    T_CLK = 1;
    T_RST = 0;
}
/********************************************************
2樓: >>參與討論
hotpower
必須打開晶振
//DS1302工作開始
void TimeWorkStart(void)
{
unsigned CHAR val;
  val = TimeByteRead(timereadseg);//讀秒數(shù)據(jù)
  val &= 0x7f;//打開晶振
  TimeWrieDisbale();//開放DS1302寫保護(hù)
  TimeByteWrite(timewriteseg, val);//打開晶振
  TimeByteWrite(tricklewrite, 0xa5);//打開充電二極管
  TimeWriteEnable();//使能DS1302寫保護(hù)
}




http://blog.21ic.org/more.asp?NAME=hotpower&id=534

3樓: >>參與討論
nj21ic
請(qǐng)高人給個(gè)程序了,兩個(gè)星期沒(méi)搞定了!!
請(qǐng)高人給個(gè)程序了,兩個(gè)星期沒(méi)搞定了!!
email:gaotekknd@126.com

4樓: >>參與討論
abc2001
資料已發(fā)到你的郵箱了,請(qǐng)查收!
 
5樓: >>參與討論
imaway
本程序沒(méi)有大毛病編的不錯(cuò)
我試過(guò)了,不知你怎么知到是FF的?

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
仿真器弄得我真郁悶請(qǐng)大家?guī)兔獯?/a>
詢雙uart單片機(jī),性價(jià)比高
中國(guó)的大學(xué)不能再搞單片機(jī)教育了!
AT89s52的外部接口問(wèn)題
我有兩個(gè)問(wèn)題想請(qǐng)教
免費(fèi)注冊(cè)為維庫(kù)電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào)