历史上的今天
返回首页

历史上的今天

今天是:2025年06月28日(星期六)

2020年06月28日 | STM8 PCF8563时钟芯片子程序

2020-06-28 来源:eefocus

软件设计

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

目 的: 建立PCF8563操作库

目标系统: 基于STM8单片机 

应用软件: Cosmic CxSTM8 

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


#include


//器件地址:

#ifndef WD_DADR 

      #define WD_DADR 0xA2 //write device-address 

#endif

#ifndef RD_DADR 

      #define RD_DADR 0xA3 //read device-address

#endif


#define CTRL_BUF1 0x00

#define CTRL_BUF2 0x01


#define SECOND_DATA_BUF 0x02

#define MINUTE_DATA_BUF 0x03

#define HOUR_DATA_BUF 0x04


#define DAY_DATA_BUF 0x05

#define WEEK_DATA_BUF 0x06

#define MONTH_DATA_BUF 0x07

#define YEAR_DATA_BUF 0x08


#define MINUTE_AE_BUF 0x09

#define HOUR_AE_BUF 0x0A

#define DAY_AE_BUF 0x0B

#define WEEK_AE_BUF 0x0C


#define CLK_FRQ_BUF 0x0D

#define TIMER_CTRL_BUF 0x0E

#define COUNT_VAL_BUF 0x0F


//changeIntToHex(33),return 0x33

//传参必须为 unsigned 类型

#define changeIntToHex(dec) ( ( ((dec)/10) <<4 ) + ((dec)%10) )


//调用changeHexToInt(0x33),return 33

//传参必须为 unsigned 类型

#define changeHexToInt(hex) ( ( ((hex)>>4) *10 ) + ((hex)%16) )


void WriteAByte(u8 wordAdr,u8 dat)

{

      I2C_Start();

      I2C_SendDAdr(WD_DADR);

      I2C_SendDat(wordAdr);

      I2C_SendDat(dat);

      I2C_stop();

}


void PCF8563_getTime(u8 *buf)

      u8 i;

      I2C_Start();

      I2C_SendDAdr(WD_DADR);

      I2C_SendDat(SECOND_DATA_BUF);

      I2C_Start();

      I2C_SendDAdr(RD_DADR);

      for(i=0;i<2;i++)

      {

             buf[i]=I2C_RcvDat();

      }

      I2C_NAck();

      buf[i]=I2C_RcvDat();

      I2C_stop();

      I2C_Ack();


      buf[0]=buf[0]&0x7f; //get second data

      buf[1]=buf[1]&0x7f; //get minute data

      buf[2]=buf[2]&0x3f; //get hour data


      buf[0]=changeHexToInt(buf[0]);

      buf[1]=changeHexToInt(buf[1]);

      buf[2]=changeHexToInt(buf[2]);

}


void PCF8563_setTime(u8 hour,u8 minute,u8 second)

{

      hour=changeIntToHex(hour); //将数据的Dex格式转换为Hex格式

      minute=changeIntToHex(minute);

      second=changeIntToHex(second);


      WriteAByte(HOUR_DATA_BUF,hour);

      WriteAByte(MINUTE_DATA_BUF,minute);

      WriteAByte(SECOND_DATA_BUF,second);

}


void PCF8563_init(u8 hour,u8 mintue,u8 second)

{

      I2C_Init();

      WriteAByte(CTRL_BUF1,0x00); //basic setting

      WriteAByte(CTRL_BUF2,0x00);

      PCF8563_setTime(hour,mintue,second);

}

推荐阅读

史海拾趣

Advanced Analog公司的发展小趣事

创新是Advanced Analog公司发展的核心动力。公司始终坚持自主研发和技术创新,不断推出新的产品和技术。这些新产品不仅满足了市场的多样化需求,也进一步巩固了公司在电源管理IC领域的领先地位。同时,Advanced Analog还积极关注行业发展趋势和未来技术走向,为公司的长远发展做好战略布局。

Crane Co.公司的发展小趣事

到了1860年代,Crane Co.作为西北制造公司,开始为铁路部门供应蒸汽机的关键部件,并涉足蒸汽加热业务领域。这一时期,公司不仅展现了其在机械制造方面的实力,还通过不断创新和拓展业务范围,为公司的长远发展奠定了坚实基础。

Amphenol Thermometrics公司的发展小趣事

随着公司业务的蓬勃发展,Crane Co.在1880年代经营着四家制造工厂,员工人数超过1500名。公司的业务足迹也逐渐延伸到美国西部地区。为了进一步提升产品质量和技术水平,Crane Co.在1890年代成立了旗下第一家冶金实验室,专注于材料研究和开发。这一举措为公司在电子行业的后续发展提供了强大的技术支持。

Alps Alpine Co Ltd公司的发展小趣事

在1870年代,Crane Co.在制造业改善方面争当先驱。公司引入了由R. T. Crane发明的多用途机器,以及移动模具和浇铸金属的传送系统。这些创新技术不仅提高了生产效率,还标志着铸造领域流水线生产的开端。这一时期的变革为Crane Co.在电子行业的发展奠定了技术基础。

City_Technology公司的发展小趣事

为了进一步推动公司的发展,City Technology于1993年决定售出部分股份,并在1996年成功在伦敦股票交易所上市。这一举措为公司带来了更多的资金支持,也为其后续的资本运作和战略扩张提供了可能。上市后的City Technology在资金、人才和市场资源等方面得到了极大的提升,为其日后的快速发展奠定了坚实的基础。

Excellence Optoelectronics Inc公司的发展小趣事

EOI深知客户的重要性,因此公司一直致力于提供优质的服务。无论是售前咨询还是售后服务,EOI都认真对待每一个客户的需求和问题。公司建立了完善的客户服务体系,为客户提供及时、专业的支持。同时,EOI还定期举办客户培训和技术交流活动,提高客户的技术水平和使用效果。这些努力使得EOI赢得了客户的信任和忠诚度。

问答坊 | AI 解惑

X波段波导裂缝全向天线的仿真研制

X波段波导裂缝全向天线的仿真研制…

查看全部问答>

智能家居

智能家居又称智能住宅,当家庭智能网关将家庭中各种各样的家电设备通过家庭总线技术连接在一起时,就构成了功能强大、高度智能化的现代智能家居系统。智能家居强调人的主观能动性,重视人与居住环境的协调,能够随心所欲地控制居住环境。   一套 ...…

查看全部问答>

程序中的问题

if(i_st & D12_INT_BUSRESET) {      bus_reset();      bEPPflags.bits.bus_reset = 1;             i_st &= ~D12_INT_BUSRESET; } 就截这么一段程序不 ...…

查看全部问答>

有谁能解释下NK.ROM吗

我记得在做ARM9 S3C2410/S3C2440的BSP时,生成是NK.BIN和NK.NB0. 但现在做ARM11 tcc8900时,生成是NK.ROM. 哪位大哥能解释下吗?…

查看全部问答>

菜鸟求教,51的符号数比较大小问题

判断两个带符号数大小,我教材这样写,没看懂,帮忙解释一下啊 X-Y为正: OV=0,则X>Y OV=1,则X…

查看全部问答>

关于“PIC开发环境”

http://sanhengxing.com/xzindex.asp 的资源下载,各位兄弟有要的吗? …

查看全部问答>

一个nmake的编译错误,请问是怎么回事。谢谢。

***** COMPILING source\\pp_main.c MS-DOS C51 COMPILER V4.10 - Serial Number 83205779 Copyright (c) Franklin Software, Inc. 1991 - 1993 *** ERROR 318 IN LINE 0: can\'t open file \'SOURCE\\PP_MAIN.C\' C51 COMPILATION COMPLETE.&n ...…

查看全部问答>

快速进行USB2.0的一致性测试与分析

USB2.0已成为连接计算机与外部设备最流行的工业标准,确保产品能通过USB-IF组织规定的USB2.0一致性测试验证则是电子工程师非常关注的工作,本文介绍了力科公司的QualiPHY软件如何帮助工程师快速进行USB2.0产品一致性测试。…

查看全部问答>

招聘FPGA、专利、pcb工程师

专利工程师 岗位职责: 1、进行专利技术检索,对研发人员提供专利咨询和指导。 2、对公司研发技术进行专利挖掘并对专利布局进行分析。 3、专利侵权分析,协助律师处理专利诉讼等专利法律事宜。   4、辅助技术团队进行专利编写, ...…

查看全部问答>