色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

PCF8563時鐘芯片驅(qū)動程序分享

姚小熊27 ? 來源:網(wǎng)絡(luò)整理 ? 2018-03-04 09:26 ? 次閱讀

PCF8563時鐘芯片簡介

PCF8563是PHILIPS公司推出的一款工業(yè)級內(nèi)含I2C總線接口功能的具有極低功耗的多功能時鐘/日歷芯片。PCF8563的多種報警功能、定時器功能、時鐘輸出功能以及中斷輸出功能能完成各種復(fù)雜的定時服務(wù),甚至可為單片機提供看門狗功能。內(nèi)部時鐘電路、內(nèi)部振蕩電路、內(nèi)部低電壓檢測電路(1.0V)以及兩線制I2C總線通訊方式,不但使外圍電路及其簡潔,而且也增加了芯片的可靠性。同時每次讀寫數(shù)據(jù)后,內(nèi)嵌的字地址寄存器會自動產(chǎn)生增量。當(dāng)然作為時鐘芯片,PCF8563亦解決了2000年問題。因而,PCF8563是一款性價比極高的時鐘芯片,它已被廣泛用于電表、水表、氣表、電話、傳真機、便攜式儀器以及電池供電儀器儀表產(chǎn)品領(lǐng)域。

PCF8563芯片主要電氣特性

1)大工作電壓范圍:1.0~5.5V

2)400KHz 的 I2C 總線接口(VDD=1.8~5.5V 時)。

PCF8563時鐘芯片驅(qū)動程序分享

時鐘頻率最大400KH

3)i2C 總線從地址:讀,0A3H;寫,0A2H 。

PCF8563時鐘芯片驅(qū)動程序

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

//define

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

#define PCF8563_ADDR 0xa2 // PCF8563設(shè)備地址

#define PCF8563_ENABLE 0x00 // 設(shè)置

#define PCF8563_SUBADDR 0x02 // 時間地址

#define PCF8563_NUMB 0x07 // 時間個數(shù)

#define PCF8563_LOOPTIME 0x02 // 循環(huán)次數(shù)

#define PCF8563_SECMASK 0x7f // second

#define PCF8563_MINMASK 0x7f // minute

#define PCF8563_HRMASK 0x3f // hour

#define PCF8563_DAYMASK 0x3f // day

#define PCF8563_WKMASK 0x07 // week

#define PCF8563_MOMASK 0x1f // month

#define PCF8563_YRMASK 0xff // year

*

void DELAY_US(Uint16 i)

{ Uint16 m,n;

for(m=0;m《i;m++)

{

for(n=0;n《5;n++)

{

_nop_();

}

}

} */

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

** 函數(shù)名稱: void DELAY_MS(Uint16 i)

** 功能描述: 延時函數(shù)

** 輸 入:延時毫秒數(shù)

** 輸 出:無

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

//延時函數(shù)單位ms

void DELAY_MS(Uint16 i)

{ Uint16 m,n; for(m=0;m《i;m++)

{

for(n=0;n《1000;n++)

{

_nop_();

}

}

}

********************************************************

** 函數(shù)名稱: InitCrt()

** 功能描述: SD2405的初始化

** 輸 入:無 ** 輸 出:無

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

void InitCrt() { //設(shè)備地址

I2cDeviceAdd = PCF8563_ADDR; }

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

** 函數(shù)名稱: CrtGetDateTime(struct SYSTEM_TIME *Time)

** 功能描述: 讀取時間

** 說 明:將從PCF8563中讀取的時間放入Time指向的結(jié)構(gòu)中

** 輸 入:無

** 輸 出:無

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

void CrtGetDateTime(struct SYSTEM_TIME *Time) {

Uint8 buf[8]; //設(shè)備地址

I2cDeviceAdd = PCF8563_ADDR;

SM_Receive (PCF8563_SUBADDR , buf, PCF8563_NUMB);

Time-》time.ucSecond = buf[0]; //秒

Time-》time.ucMinute = buf[1]; //分

Time-》time.ucHour = buf[2]; //時

屏蔽最高位 Time-》date.ucDay = buf[3]; //日

Time-》Week = buf[4]; //星期 Time-》date.ucMonth = buf[5]; //月

Time-》date.ucYear = buf[6]; //年

}

/******************************************************** ** 函數(shù)名稱: CrtSetDateTime(struct SYSTEM_TIME *Time) ** 功能描述: 設(shè)置時間

** 說 明:將Time指向的結(jié)構(gòu)中日期時間參數(shù)設(shè)置到sd24.5中

** 輸 入:無 ** 輸 出:無

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

void CrtSetDateTime(struct SYSTEM_TIME *Time)

{

Uint8 buf[8]; //設(shè)備地址

I2cDeviceAdd = PCF8563_ADDR;

//寫入設(shè)置(時鐘工作、關(guān)閉復(fù)位、關(guān)閉測試模式)

buf[0] = PCF8563_ENABLE;

SM_Send (0, buf, 0);

//寫入日期時間 buf[0] = Time-》time.ucSecond; //秒

buf[1] = Time-》time.ucMinute; //分

buf[2] = Time-》time.ucHour|0x80; //時 置為24小時格式

buf[3] = Time-》date.ucDay; //日

buf[4] = Time-》Week; //星期

buf[5] = Time-》date.ucMonth; //月

buf[6] = Time-》date.ucYear; //年

SM_Send (PCF8563_SUBADDR, buf, PCF8563_NUMB);

}

4 新華龍C8051F022的IIC驅(qū)動程序

//----------------------------------------------------------------------------- // Includes

//-----------------------------------------------------------------------------

#include 《c8051f020.h》 // SFR declarations #include 《stdio.h》

#include 《king.h》

#include 《DYSJ.h》

#include 《I2C.H》

#define SMB_FREQUENCY 10000L // Target SCL clock rate

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

** 函數(shù)名稱:void SPI0_Init()

** 功能描述:I2C初始化程序

** 說 明:

1. 置下降沿有效

2. 置工作時鐘2MHz

3.

** 輸 入:無

** 輸 出:無

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

void I2C_Init() { SMB0CN = 0x44; // Enable SMBus with ACKs on acknowledge cycle

SMB0CR = -80; //257 - (SYSCLK / (2 * SMB_FREQUENCY));

EIE1 |= 2; // SMBus interrupt enable

// EA = 1; // Global interrupt enable

I2cSM_BUSY = 0; // Free SMBus for first transfer.

}

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

** 函數(shù)名稱:void SM_Send (Uint8 byte_address,Uint8 *SendBuf,Uint8 count)

** 功能描述:I2C寫入程序

** 說 明:

1. 等待空閑

2. 寫入數(shù)據(jù)

3. 等待結(jié)束

** 輸 入:地址byte_address、寫入數(shù)據(jù)緩沖區(qū)*SendBuf、數(shù)量count

** 輸 出:無

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

void SM_Send (Uint8 byte_address,Uint8 *SendBuf,Uint8 count)

{

ET0 = 0; //禁止中斷

ET2 = 0; //禁止中斷

while (I2cSM_BUSY); // 等待空閑

I2cSM_BUSY = 1; // 置忙

SMB0CN = 0x44; // SMBus enabled, ACK on acknowledge cycle

I2cSendCount = count; // 置寫入數(shù)量

I2cRecCount = 0; // 讀出數(shù)量清零

I2cSendDPTR = SendBuf; // SMBus enabled, ACK on acknowledge cycle

I2CWRITE; // Chip select + WRITE

I2cMemAdd = byte_address;

STO = 0;

STA = 1; // 啟動傳輸

FeedWatchdog(); while (I2cSM_BUSY); // 等待空閑

ET0 = 1; //允許中斷

ET2 = 1; //允許中斷

******************************************************************************

** 函數(shù)名稱:void SM_Receive (Uint8 byte_address,Uint8 *ReadBuf,Uint8 count)

** 功能描述:I2C讀取程序

** 說 明:

1. 等待空閑

2. 置地址

3. 讀取數(shù)據(jù)

3. 等待結(jié)束

** 輸 入:地址byte_address、讀取數(shù)據(jù)緩沖區(qū)*SendBuf、數(shù)量count

** 輸 出:無

*******************************************************************************

/

void SM_Receive (Uint8 byte_address,Uint8 *ReadBuf,Uint8 count)

{

ET0 = 0; //禁止中斷

ET2 = 0; //禁止中斷

while (I2cSM_BUSY); // 等待空閑

I2cSM_BUSY = 1; // 置忙

SMB0CN = 0x44; // SMBus enabled, ACK on acknowledge cycle

I2cSendCount = 0; // 置寫入數(shù)量

I2CWRITE; // Chip select + WRITE

I2cMemAdd = byte_address; //值地址偏移

I2cRecCount = count; //要接收的數(shù)據(jù)個數(shù)

I2cRecDPTR = ReadBuf; //指向要接收的數(shù)據(jù)區(qū)

STO = 0;

STA = 1; // Start transfer

FeedWatchdog();

while (I2cSM_BUSY); // 等待空閑

ET0 = 1; //允許中斷

ET2 = 1; //允許中斷

}

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

** 函數(shù)名稱:void SMBUS_ISR (void) interrupt 7

** 功能描述:I2C中斷服務(wù)程序

** 說 明:

1. 選擇器件地址

2. 置讀寫地址

3. 讀取或?qū)懭霐?shù)據(jù)

3. 置結(jié)束標(biāo)志

** 輸 入:無

** 輸 出:無

*******************************************************************************

/

void SMBUS_ISR (void) interrupt 7

{

switch (SMB0STA) // Status code for the SMBus (SMB0STA register)

{

// 主發(fā)送器/接收器:起始條件已發(fā)送

// 在該狀態(tài)發(fā)送的COMMAND 字的R/W 位總是為0(W),

// 因為對于讀和寫操作來說都必須先寫存儲器地址。

case SMB_START:

SMB0DAT = I2cCOMMAND;

// 寫入含讀寫指令的設(shè)備地址

STA = 0;

// 清除啟動標(biāo)志

break;

//主發(fā)送器/接收器:重復(fù)起始條件已發(fā)送。

// 該狀態(tài)只應(yīng)在讀操作期間出現(xiàn),在存儲器地址已發(fā)送并得到確認之后

case SMB_RP_START:

I2CREAD; // 置設(shè)備讀

SMB0DAT = I2cCOMMAND; // 寫入含讀寫指令的設(shè)備地址

STA = 0;

break;

// 主發(fā)送器 設(shè)備地址+(W/R)已發(fā)出。收到ACK。

case SMB_MTADDACK:

SMB0DAT = I2cMemAdd; // 發(fā)送要寫入的字節(jié)地址

break;

// 主發(fā)送器 從地址+W已發(fā)出。收到NACK。

case SMB_MTADDNACK:

/* if (I2cSendCount) // 傳輸結(jié)束

{

SMB0DAT = *I2cSendDPTR; //傳送數(shù)據(jù)

I2cSendDPTR++;

I2cSendCount--;

}

else

{ if(I2cRecCount)

{

STO = 0;

STA = 1;

}

else

{

STO = 1

I2cSM_BUSY = 0; //發(fā)送停止,釋放總線

}

}*/

STO = 1;

STA = 1;

break;

// 數(shù)據(jù)字節(jié)已經(jīng)發(fā)出,收到ACK

case SMB_MTDBACK:

if (I2cSendCount) // 傳輸結(jié)束

{

SMB0DAT = *I2cSendDPTR; //傳送數(shù)據(jù)

I2cSendDPTR++;

I2cSendCount--;

}

else

{

if(I2cRecCount)

{ STO = 0;

STA = 1;

}

else

{

STO = 1;

I2cSM_BUSY = 0; //發(fā)送停止,釋放總線

} }

break;

// 數(shù)據(jù)字節(jié)已經(jīng)發(fā)出,收到NACK

case SMB_MTDBNACK:

STO = 1;

STA = 1;

break;

// 主發(fā)送器 競爭失敗

case SMB_MTARBLOST:

STO = 1;

STA = 1;

break;

// 從地址+R已經(jīng)發(fā)出,收到ACK

case SMB_MRADDACK:

SysBuff[500]=8;

//if (counter == 1) //只接收一個字節(jié)時要設(shè)置接收后就NACK

//{

// AA = 0;

// NACK sent on acknowledge cycle.

//}

break;

// 從地址+R已經(jīng)發(fā)出,收到NACK

case SMB_MRADDNACK:

STO = 0;

STA = 1;

break; // 數(shù)據(jù)字節(jié)收到,ACK已經(jīng)發(fā)出

case SMB_MRDBACK:

if (I2cRecCount == 1)

{

AA = 0;

// 收到最后一個字節(jié)前準(zhǔn)備設(shè)置最后一個字節(jié)不應(yīng)答

}

I2cRecCount--;

*I2cRecDPTR = SMB0DAT;

I2cRecDPTR++;

break;

// 數(shù)據(jù)字節(jié)收到,NACK已經(jīng)發(fā)出

case SMB_MRDBNACK:

*I2cRecDPTR = SMB0DAT;

STO = 1;

I2cSM_BUSY = 0; // Free SMBus

break;

// 未知狀態(tài)或總線錯誤

default:

STO = 1; // Reset communication.

I2cSM_BUSY = 0;

break;

}

SI=0; // clear interrupt flag

}

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 驅(qū)動程序
    +關(guān)注

    關(guān)注

    19

    文章

    851

    瀏覽量

    48360
  • PCF8563
    +關(guān)注

    關(guān)注

    3

    文章

    37

    瀏覽量

    24722
收藏 人收藏

    評論

    相關(guān)推薦

    基于PCF8563的數(shù)字時鐘設(shè)計

    PCF8563是PHILIPS公司推出的一款工業(yè)級、內(nèi)含I2C總線接口功能,且具有極低功耗的多功能時鐘/日歷芯片,還具有多種報警功能、定時器功能、時鐘輸出功能,以及中斷輸出功能等,能完
    發(fā)表于 09-29 14:47 ?7783次閱讀
    基于<b class='flag-5'>PCF8563</b>的數(shù)字<b class='flag-5'>時鐘</b>設(shè)計

    通用IIC總線驅(qū)動程序設(shè)計及實時時鐘芯片PCF8563的控制實例

    ;><strong>通用IIC總線驅(qū)動程序設(shè)計及實時時鐘芯片PCF8563的控制實例<br/></strong&
    發(fā)表于 10-31 16:24

    PCF8563時鐘設(shè)計應(yīng)用

    前天我用時鐘芯片PCF8563與89C51搭了個系統(tǒng)!現(xiàn)在分享下PCF8563R日歷時鐘芯片原理
    發(fā)表于 08-26 11:32

    關(guān)于PCF8563時鐘模塊的介紹

    ESP32使用PCF8563時鐘模塊獲取網(wǎng)絡(luò)校時關(guān)于PCF8563時鐘模塊的介紹接線下載Arduino的PCF8563庫關(guān)于
    發(fā)表于 01-17 08:20

    PCF8563匯編程序

    剛寫的一個PCF8563匯編程序,請教高手!!!;***************************************************************;PCF8563
    發(fā)表于 08-19 17:41 ?90次下載

    PCF8563驅(qū)動程序演示實驗

    PCF8563驅(qū)動程序演示實驗 一、實驗?zāi)康?b class='flag-5'>PCF8563是一款性價比極高的時鐘
    發(fā)表于 09-26 17:40 ?4199次閱讀

    PCF8563日歷時鐘芯片原理及應(yīng)用設(shè)計

    PCF8563日歷時鐘芯片原理及應(yīng)用設(shè)計,很好的學(xué)習(xí)資料。
    發(fā)表于 06-03 15:31 ?80次下載

    時鐘芯片PCF8563

    時鐘芯片PCF8563
    發(fā)表于 12-17 10:06 ?17次下載

    pcf8563芯片功能_工作原理和引腳圖及應(yīng)用介紹

    本文開始介紹了了pcf8563主要特性與pcf8563引腳圖及功能,其次介紹了pcf8563功能和pcf8563工作原理,最后介紹了PCF8563
    發(fā)表于 03-04 09:01 ?7.3w次閱讀

    如何調(diào)整pcf8563精度_PCF8563高精度調(diào)整方法介紹

    本文開始介紹看pcf8563的特性與pcf8563方框圖,其次介紹了pcf8563工作原理及管腳配置圖及說明,最后詳細的闡述了PCF8563實時時鐘
    的頭像 發(fā)表于 03-04 10:00 ?2.4w次閱讀
    如何調(diào)整<b class='flag-5'>pcf8563</b>精度_<b class='flag-5'>PCF8563</b>高精度調(diào)整方法介紹

    基于PCF8563時鐘芯片的萬年歷制作

    PCF8563是PHILIPS公司推出的一款工業(yè)級內(nèi)含I2C總線接口功能的具有極低功耗的多功能時鐘/日歷芯片.本文介紹了pcf8563工作原理及pc
    發(fā)表于 03-04 16:07 ?2w次閱讀

    使用單片機應(yīng)用PCF8563時鐘芯片的C語言程序免費下載

    本文檔的主要內(nèi)容詳細介紹的是使用單片機應(yīng)用PCF8563時鐘芯片的C語言程序免費下載。
    發(fā)表于 09-04 17:27 ?21次下載
    使用單片機應(yīng)用<b class='flag-5'>PCF8563</b><b class='flag-5'>時鐘</b><b class='flag-5'>芯片</b>的C語言<b class='flag-5'>程序</b>免費下載

    微雪電子RTC時鐘模塊PCF8563 PCF8563T介紹

    PCF8563 RTC時鐘模塊 I2C接口 帶日歷功能,接入備用電池,掉電后可繼續(xù)工作 型號 PCF8563 RTC Board
    的頭像 發(fā)表于 12-30 08:59 ?7833次閱讀
    微雪電子RTC<b class='flag-5'>時鐘</b>模塊<b class='flag-5'>PCF8563</b> <b class='flag-5'>PCF8563</b>T介紹

    PCF8563時鐘模塊

    電子發(fā)燒友網(wǎng)站提供《PCF8563時鐘模塊.zip》資料免費下載
    發(fā)表于 07-19 09:28 ?10次下載
    <b class='flag-5'>PCF8563</b><b class='flag-5'>時鐘</b>模塊

    PCF8563時鐘芯片 C語言編程樣例

    PCF8563 時鐘芯片 C語言編程樣例
    發(fā)表于 10-17 14:46 ?31次下載
    主站蜘蛛池模板: 女人吃男人的鸡鸡 | 国产精品久久久精品a级小说 | 超碰日韩人妻高清视频 | 性做久久久久久久久浪潮 | 伊人久久大香线蕉综合电影 | 久久久久久久电影 | A级韩国乱理伦片在线观看 a级成人免费毛片完整版 | 抽插内射高潮呻吟V杜V | 蜜芽最新域名解析网站 | 欧美人与禽ZOZO性伦交视频 | 色柚视频网站ww色 | 囯产精品久久久久免费蜜桃 | 印度人XXx| 处初女处夜情视频在线播放 | 2021精品乱码多人收藏 | 久久精品WWW人人爽人人 | 午夜在线播放免费人成无 | 久久久无码精品亚洲A片猫咪 | 日韩大胆视频 | 天天看片视频免费观看 | 久爱在线中文在观看 | 香蕉97超级碰碰碰碰碰久 | 日本少妇内射视频播放舔 | 国产成人a视频在线观看 | 国产精品线路一线路二 | 色四房播播 | 国产AV精品久久久免费看 | 99国内精精品久久久久久婷婷 | 在线观看国产视频 | 香蕉久久日日躁夜夜嗓 | 久久精品国产色蜜蜜麻豆国语版 | 国产乱对白精彩在线播放 | 午夜伦伦电影理论片大片 | 麻豆精选2021 | 成人影片迅雷下载 | 国产精品第十页 | 亚洲1卡二卡3卡4卡新区在线 | 旧里番ovaの催○セイ活指导 | 秋霞伦理高清视频在线 | 久久99国产综合精品AV蜜桃 | 国产午夜a理论毛片在线影院 |