久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
PCF8563T標準驅動源程序
[打印本頁]
作者:
carry
時間:
2019-8-10 22:20
標題:
PCF8563T標準驅動源程序
龍嘯九天的標準IIC程序,PCF8563T
單片機源程序如下:
/**————————————————————
2 〖說明〗I2C總線驅動程序(用兩個普通IO模擬I2C總線)
3 包括100Khz(T=10us)的標準模式(慢速模式)選擇,
4 和400Khz(T=2.5us)的快速模式選擇,
5 默認11.0592Mhz的晶振。
9 〖版本〗V1.00A Build 0803
10 ————————————
/**/
#include <reg66x.h> /* special function registers */
#include <INTRINS.H>
#define uchar unsigned char
#define uint unsigned int
#define Byte unsigned char
#define Word unsigned int
#define bool bit
#define true 1
#define false 0
uchar SystemError;
#define SomeNOP() _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
extern void delay(int n);
/**--------------------------------------------------------------------------------
30 調用方式:void I2CStart(void) ﹫2001/07/0 4
31 函數說明:私有函數,I2C專用
32 ---------------------------------------------------------------------------------*/
void I2CStart(void)
{
EA=0;
SDA=1; SCL=1; SomeNOP();//INI
SDA=0; SomeNOP(); //START
SCL=0;
}
/**--------------------------------------------------------------------------------
42 調用方式:void I2CStop(void) ﹫2001/07/0 4
43 函數說明:私有函數,I2C專用
44 ---------------------------------------------------------------------------------*/
void I2CStop(void)
{
SCL=0; SDA=0; SomeNOP(); //INI
SCL=1; SomeNOP(); SDA=1; //STOP
EA=1;
}
/**--------------------------------------------------------------------------------
53 調用方式:bit I2CAck(void) ﹫2001/07/0 4
54 函數說明:私有函數,I2C專用,等待從器件接收方的應答
55 ---------------------------------------------------------------------------------*/
bool WaitAck(void)
{
uchar errtime=255;//因故障接收方無ACK,超時值為255。
SDA=1;SomeNOP();
SCL=1;SomeNOP();
while(SDA) {errtime--; if (!errtime) {I2CStop();SystemError=0x11;return false;}}
SCL=0;
return true;
//第1 頁
//文件: PCF8563T.C 2001-11-27, 18:39:20
}
/**--------------------------------------------------------------------------------
67 調用方式:void SendAck(void) ﹫2001/07/0 4
68 函數說明:私有函數,I2C專用,主器件為接收方,從器件為發送方時,應答信號。
69 ---------------------------------------------------------------------------------*/
void SendAck(void)
{
SDA=0; SomeNOP();
SCL=1; SomeNOP();
SCL=0;
}
/**--------------------------------------------------------------------------------
78 調用方式:void SendAck(void) ﹫2001/07/0 4
79 函數說明:私有函數,I2C專用,主器件為接收方,從器件為發送方時,非應答信號。
80 }**--------------------------------------------------------------------------------
*/
void SendNotAck(void)
{
SDA=1; SomeNOP();
SCL=1; SomeNOP();
SCL=0;
}
/**--------------------------------------------------------------------------------
89 調用方式:void I2CSend(uchar ch) ﹫2001/07/0 5
90 函數說明:私有函數,I2C專用
91 ---------------------------------------------------------------------------------*/
void I2CSendByte(Byte ch)
{
uchar i=8;
while (i--)
{
SCL=0;_nop_();
SDA=(bit)(ch&0x80); ch<<=1; SomeNOP();
SCL=1; SomeNOP();
}
SCL=0;
}
/**--------------------------------------------------------------------------------
105 調用方式:uchar I2CReceive(void) ﹫2001/07/0 5
106 函數說明:私有函數,I2C專用
107 ---------------------------------------------------------------------------------*/
Byte I2CReceiveByte(void)
{
uchar i=8;
Byte ddata=0;
SDA=1;
while (i--)
{
ddata<<=1;
SCL=0;SomeNOP();
SCL=1;SomeNOP();
ddata|=SDA;
}
SCL=0;
return ddata;
}
//---------------------------------------------------------------------------
//開始PCF8563T驅動程序
//第2 頁
//文件: PCF8563T.C 2001-11-27, 18:39:20
/**--------------------------------------------------------------------------------
128 調用方式:void GetPCF8563(uchar firsttype,uchar count,uchar *buff) ﹫2001/08/0 7
129 函數說明:讀取時鐘芯片PCF8563的時間,設置要讀的第一個時間類型firsttype,并設置讀取
130 的字節數,則會一次把時間讀取到buff中。順序是:
131 0x02:秒/0x03:分/0x04:小時/0x05:日/0x06:星期/0x07:月(世紀)/0x08:年
132 ---------------------------------------------------------------------------------*/
void GetPCF8563(uchar firsttype,uchar count,uchar *buff)
{
uchar i;
I2CStart();
I2CSendByte(0xA2);
WaitAck();
I2CSendByte(firsttype);
WaitAck();
I2CStart();
I2CSendByte(0xA3);
WaitAck();
for (i=0;i<count;i++)
{
buff[i]=I2CReceiveByte();
if (i!=count-1) SendAck();//除最后一個字節外,其他都要從MASTER發應答。
}
SendNotAck();
I2CStop();
}
/**--------------------------------------------------------------------------------
158 調用方式:void SetPCF8563(uchar timetype,uchar value) ﹫2001/08/0 7
159 函數說明:調整時鐘。timetype是要改的時間類型,value是新設置的時間值(BCD格式)。
160 0x02:秒/0x03:分/0x04:小時/0x05:日/0x06:星期/0x07:月(世紀)/0x08:年
161 ---------------------------------------------------------------------------------*/
void SetPCF8563(uchar timetype,uchar value)
{
I2CStart();
I2CSendByte(0xA2);
WaitAck();
I2CSendByte(timetype);
WaitAck();
I2CSendByte(value);
WaitAck();
I2CStop();
}
/**--------------------------------------------------------------------------------
175 調用方式:void SetAlarmHour(uchar count) ﹫2001/08/0 7
176 函數說明:設置報警鬧鐘在一天的第count點報警。例如:count=23,則在晚上11點報警。
177 ---------------------------------------------------------------------------------
void SetAlarm(uchar alarmtype,uchar count)
{
SetPCF8563(0x01,0x02);
SetPCF8563(alarmtype,count);
}
*/
/**--------------------------------------------------------------------------------
85 調用方式:void CleanAlarm(void) ﹫2001/08/0 7
186 函數說明:清除所有報警設置。
187 ---------------------------------------------------------------------------------
void CleanAlarm(void)
{
//第3 頁
//文件: PCF8563T.C 2001-11-27, 18:39:20
SetPCF8563(0x01,0x00);
SetPCF8563(0x09,0x80);
SetPCF8563(0x0A,0x80);
SetPCF8563(0x0B,0x80);
SetPCF8563(0x0C,0x80);
// SetPCF8563(0x0D,0x00);
// SetPCF8563(0x0E,0x03);
}
*/
/*--------------------------------------------------------------------------------
201 調用方式:uchar read1380(uchar command )
202 函數說明:read1380()返回當前時間, command指要返回的時間類型。
203 秒:81H 分鐘:83H 小時:85H 日期:87H 星期:89H 星期幾:8BH 年:8D H
204 ---------------------------------------------------------------------------------*/
// uchar read1380 (uchar command)
// {
// uchar time;
// GetPCF8563(command,1,&time);
// return time;
// }
//---------------------------------------------------------------------------
//開始CAT1161驅動程序
//第2 頁
//文件: CAT1161.C 2001-11-27, 18:39:20
/**--------------------------------------------------------------------------------
128 調用方式:void GetCAT1161(uchar catadd,uchar count,uchar *buff) ﹫2001/08/0 7
129 函數說明:讀取時鐘芯片PCF8563的時間,設置要讀的第一個時間類型firsttype,并設置讀取
130 的字節數,則會一次把時間讀取到buff中。順序是:
131 0x02:秒/0x03:分/0x04:小時/0x05:日/0x06:星期/0x07:月(世紀)/0x08:年
132 ---------------------------------------------------------------------------------
void GetCAT1161(uchar catadd,uchar *buff)
{
// uchar i;
I2CStart();
I2CSendByte(0xA0);
WaitAck();
I2CSendByte(catadd);
WaitAck();
I2CStart();
I2CSendByte(0xA1);
WaitAck();
I2CSendByte(catadd);
WaitAck();
// for (i=0;i<count;i++)
// {
*buff=I2CReceiveByte();
// if (i!=count-1) SendAck();//除最后一個字節外,其他都要從MASTER發應答。
// }
SendNotAck();
I2CStop();
}
/**--------------------------------------------------------------------------------
158 調用方式:void SetCAT1161(uchar timetype,uchar value) ﹫2001/08/0 7
159 函數說明:調整時鐘。timetype是要改的時間類型,value是新設置的時間值(BCD格式)。
160 0x02:秒/0x03:分/0x04:小時/0x05:日/0x06:星期/0x07:月(世紀)/0x08:年
161 ---------------------------------------------------------------------------------
void SetCAT1161(uchar catadd,uchar value)
{
I2CStart();
I2CSendByte(0xA0);
WaitAck();
I2CSendByte(catadd);
WaitAck();
I2CSendByte(value);
WaitAck();
I2CStop();
}
*/
//---------------------------------------------------------------------------
//開始AT24C02驅動程序
/**--------------------------------------------------------------------------------
128 調用方式:void AT24C02(uchar firstadd,uchar count,uchar *buff) ﹫2001/08/0 7
129 函數說明:
132 ---------------------------------------------------------------------------------*/
void ReadAT24C02(uchar *buff)
{
unsigned char i=0;
unsigned char nLen=26;
I2CStart();
I2CSendByte(0xA0);
WaitAck();
I2CSendByte(0x00); //ram的第一個地址
WaitAck();
I2CStart();
I2CSendByte(0xA1);
WaitAck();
while(--nLen)
{
buff[i]=I2CReceiveByte(); //讀出內容
i++; //指針加1
SendAck(); //發確認信號
}
buff[i]=I2CReceiveByte(); //讀一字節
SendNotAck(); //沒有確認信號
I2CStop();
}
/**--------------------------------------------------------------------------------
158 調用方式:void SetAT24C02(uchar firstadd,uchar count,uchar *buff) ﹫2005/12/28
159 函數說明:
161 ---------------------------------------------------------------------------------*/
void WriteAT24C02(uchar *buff)
{
unsigned char i,temp,Addr;
unsigned char k=0;
unsigned char nLen=26;
Addr=0x00;
I2CStart();
I2CSendByte(0xA0);
WaitAck();
I2CSendByte(Addr);
WaitAck();
for(i = 0;i < nLen;i++)
{
if(Addr%8==0) //每頁8字節 //換頁
{
I2CStop();
delay(10000);
SomeNOP();
I2CStart();
I2CSendByte(0xA0);
WaitAck();
I2CSendByte(Addr);
WaitAck();
}
temp = buff[k];
I2CSendByte(temp);
WaitAck();
k++;
Addr++;
}
I2CStop();
}
復制代碼
以上程序51hei提供下載:
pcf8563t.rar
(2.37 KB, 下載次數: 92)
2019-8-10 22:19 上傳
點擊文件名下載附件
IIC驅動程序
下載積分: 黑幣 -5
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
不卡在线一区
|
在线成人免费视频
|
一区二区三区在线播放
|
国产日韩精品一区
|
成人性视频免费网站
|
人人看人人草
|
五月激情婷婷六月
|
日产精品久久久一区二区福利
|
日本特黄a级高清免费大片 成年人黄色小视频
|
国产h视频
|
91精品国产91久久久久久
|
亚洲免费视频一区二区
|
婷婷在线视频
|
欧美成人一区二区
|
在线视频 亚洲
|
久久精品国产精品青草
|
99国产精品久久久
|
久久久久九九九女人毛片
|
色偷偷噜噜噜亚洲男人
|
中文字幕第一页在线
|
亚洲一区视频在线
|
国产目拍亚洲精品99久久精品
|
夜夜夜夜夜夜曰天天天
|
国产精品久久久久久久久久久免费看
|
欧州一区
|
欧美日韩专区
|
色综合久久久久
|
色综合久久天天综合网
|
www.久草.com
|
精品国产一区二区三区久久久蜜月
|
久久国产精品精品国产色婷婷
|
亚洲 欧美 另类 综合 偷拍
|
色噜噜狠狠色综合中国
|
99re国产精品
|
四虎永久免费黄色影片
|
久色激情
|
亚洲精品久久久久久首妖
|
成人国内精品久久久久一区
|
欧美成人h版在线观看
|
免费一看一级毛片
|
中文字幕av亚洲精品一部二部
|