




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
..PCF8563時鐘芯片驅動詳解1概述PCF8563是PHILIPS公司推出的一款工業級含I2C總線接口功能的具有極低功耗的多功能時鐘/日歷芯片。PCF8563的多種報警功能、定時器功能、時鐘輸出功能以及中斷輸出功能能完成各種復雜的定時服務,甚至可為單片機提供看門狗功能。部時鐘電路、部振蕩電路、部低電壓檢測電路(1.0V)以及兩線制I2C總線通訊方式,不但使外圍電路及其簡潔,而且也增加了芯片的可靠性。同時每次讀寫數據后,嵌的字地址寄存器會自動產生增量。當然作為時鐘芯片,PCF8563亦解決了2000年問題。因而,PCF8563是一款性價比極高的時鐘芯片,它已被廣泛用于電表、水表、氣表、、傳真機、便攜式儀器以及電池供電的儀器儀表等產品領域。2原理圖38563源代碼//******************************************************//define//*****************************************************#define PCF8563_ADDR 0xa2 //PCF8563設備地址#define PCF8563_ENABLE 0x00 //設置#define PCF8563_SUBADDR 0x02 //時間地址#define PCF8563_NUMB 0x07 //時間個數 #define PCF8563_LOOPTIME 0x02 //循環次數#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/*voidDELAY_US(Uint16i){ Uint16m,n;for(m=0;m<i;m++){for(n=0;n<5;n++){_nop_();}}}*//**********************************************************函數名稱:voidDELAY_MS(Uint16i) **功能描述:延時函數 **輸入:延時毫秒數**輸出:無********************************************************///延時函數單位msvoidDELAY_MS(Uint16i){ Uint16m,n;for(m=0;m<i;m++){for(n=0;n<1000;n++){_nop_();} } }/**********************************************************函數名稱:InitCrt() **功能描述:SD2405的初始化 **輸入:無**輸出:無********************************************************/voidInitCrt(){//設備地址I2cDeviceAdd=PCF8563_ADDR;}/**********************************************************函數名稱:CrtGetDateTime(structSYSTEM_TIME*Time) **功能描述:讀取時間**說明:將從PCF8563中讀取的時間放入Time指向的結構中 **輸入:無**輸出:無********************************************************/voidCrtGetDateTime(structSYSTEM_TIME*Time){Uint8buf[8];//設備地址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]; //年}/**********************************************************函數名稱:CrtSetDateTime(structSYSTEM_TIME*Time) **功能描述:設置時間**說明:將Time指向的結構中日期時間參數設置到sd24.5中 **輸入:無**輸出:無********************************************************/voidCrtSetDateTime(structSYSTEM_TIME*Time){Uint8buf[8];//設備地址I2cDeviceAdd=PCF8563_ADDR;//寫入設置(時鐘工作、關閉復位、關閉測試模式)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驅動程序//-----------------------------------------------------------------------------//Includes//-----------------------------------------------------------------------------#include<c8051f020.h>//SFRdeclarations#include<stdio.h>#include<king.h>#include<DYSJ.h>#include<I2C.H>#defineSMB_FREQUENCY10000L//TargetSCLclockrate/********************************************************************************函數名稱:voidSPI0_Init()**功能描述:I2C初始化程序**說明:1.置下降沿有效2.置工作時鐘2MHz3.**輸入:無**輸出:無*******************************************************************************/voidI2C_Init(){SMB0CN=0x44; //EnableSMBuswithACKsonacknowledgecycleSMB0CR=-80; //257-(SYSCLK/(2*SMB_FREQUENCY));EIE1|=2; //SMBusinterruptenable// EA=1; //GlobalinterruptenableI2cSM_BUSY=0; //FreeSMBusforfirsttransfer.}/********************************************************************************函數名稱:voidSM_Send(Uint8byte_address,Uint8*SendBuf,Uint8count)**功能描述:I2C寫入程序**說明:1.等待空閑2.寫入數據3.等待結束**輸入:地址byte_address、寫入數據緩沖區*SendBuf、數量count**輸出:無*******************************************************************************/voidSM_Send(Uint8byte_address,Uint8*SendBuf,Uint8count){ET0=0; //禁止中斷ET2=0; //禁止中斷while(I2cSM_BUSY); //等待空閑I2cSM_BUSY=1; //置忙SMB0CN=0x44; //SMBusenabled,ACKonacknowledgecycleI2cSendCount=count; //置寫入數量I2cRecCount=0; //讀出數量清零I2cSendDPTR=SendBuf; //SMBusenabled,ACKonacknowledgecycleI2CWRITE; //Chipselect+WRITEI2cMemAdd=byte_address; STO=0;STA=1; //啟動傳輸FeedWatchdog();while(I2cSM_BUSY); //等待空閑ET0=1; //允許中斷ET2=1; //允許中斷}/********************************************************************************函數名稱:voidSM_Receive(Uint8byte_address,Uint8*ReadBuf,Uint8count)**功能描述:I2C讀取程序**說明:1.等待空閑2.置地址3.讀取數據3.等待結束**輸入:地址byte_address、讀取數據緩沖區*SendBuf、數量count**輸出:無*******************************************************************************/voidSM_Receive(Uint8byte_address,Uint8*ReadBuf,Uint8count){ET0=0; //禁止中斷ET2=0; //禁止中斷while(I2cSM_BUSY); //等待空閑I2cSM_BUSY=1; //置忙SMB0CN=0x44; //SMBusenabled,ACKonacknowledgecycleI2cSendCount=0; //置寫入數量I2CWRITE; //Chipselect+WRITEI2cMemAdd=byte_address; //值地址偏移I2cRecCount=count; //要接收的數據個數I2cRecDPTR=ReadBuf; //指向要接收的數據區STO=0;STA=1; //StarttransferFeedWatchdog();while(I2cSM_BUSY); //等待空閑ET0=1; //允許中斷ET2=1; //允許中斷}/********************************************************************************函數名稱:voidSMBUS_ISR(void)interrupt7**功能描述:I2C中斷服務程序**說明:1.選擇器件地址2.置讀寫地址3.讀取或寫入數據3.置結束標志**輸入:無**輸出:無*******************************************************************************/voidSMBUS_ISR(void)interrupt7{switch(SMB0STA)//StatuscodefortheSMBus(SMB0STAregister){//主發送器/接收器:起始條件已發送//在該狀態發送的COMMAND字的R/W位總是為0(W),//因為對于讀和寫操作來說都必須先寫存儲器地址。caseSMB_START:SMB0DAT=I2cCOMMAND; //寫入含讀寫指令的設備地址STA=0; //清除啟動標志break;//主發送器/接收器:重復起始條件已發送。//該狀態只應在讀操作期間出現,在存儲器地址已發送并得到確認之后caseSMB_RP_START:I2CREAD; //置設備讀SMB0DAT=I2cCOMMAND; //寫入含讀寫指令的設備地址STA=0;break;//主發送器設備地址+(W/R)已發出。收到ACK。caseSMB_MTADDACK:SMB0DAT=I2cMemAdd; //發送要寫入的字節地址break;//主發送器從地址+W已發出。收到NACK。caseSMB_MTADDNACK:/* if(I2cSendCount) //傳輸結束{SMB0DAT=*I2cSendDPTR; //傳送數據I2cSendDPTR++;I2cSendCount--; }else{if(I2cRecCount){STO=0;STA=1;}else{STO=1; I2cSM_BUSY=0; //發送停止,釋放總線}}*/ STO=1;STA=1;break;//數據字節已經發出,收到ACKcaseSMB_MTDBACK:if(I2cSendCount) //傳輸結束{SMB0DAT=*I2cSendDPTR; //傳送數據I2cSendDPTR++;I2cSendCount--; }else{if(I2cRecCount){STO=0;STA=1;}el
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 電影原聲帶制作技術保密及收益分成補充協議
- 砂石篩分協議書
- 羊圈用地協議書
- 艾滋保密協議書
- 合同法有關認購協議書
- 藥房保密協議書
- 營銷團隊協議書
- 職業操守協議書
- 比亞迪汽車競價協議書
- 用電服務協議書
- 深基坑專項施工方案(鋼板樁支護)
- 20ZJ401 樓梯欄桿標準圖集
- 人教PEP版四年級英語下冊Unit 6 Shopping知識點歸納
- 關稅系統崗位練兵業務知識測試題庫(綜合知識)附答案
- 做管裝愛裝的好戰士(高級課件)
- 建筑工程中級職稱論文范文精選6篇
- 35kV電纜載流量計算公式
- 【醫院管理】課題研究型醫院品管圈概念與實操課件
- 國父孫中山課件
- 安全主題班會 《防洪防汛知識講解》教學課件
- GB∕T 1727-2021 漆膜一般制備法
評論
0/150
提交評論