软件设计
/*********************************************************************
目 的: 建立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); }
上一篇:STM8 PCF8591 AD/DA转换子程序
下一篇:STM8 PS2接口应用子程序
推荐阅读最新更新时间:2024-11-19 16:42
设计资源 培训 开发板 精华推荐
- LSM6DS3H适配器板,标准DIL24插座
- MC34071DR2G 单位增益缓冲器的典型应用 (AV = +1)
- DC1753A-A,基于 LTC3880EUJ 双相单输出的演示板 (RSENSE),PMBus 降压,6.5V = VIN = 24V,VOUT = 0.5V 至 3.3V @ 40A
- ADR420 超精密、低噪声、5.00 Vout XFET 电压基准作为可编程电流源的典型应用
- 使用 Analog Devices 的 LTC5800IWR-IPMA 的参考设计
- AM6TW-4805DZ ±5V 6 瓦双路输出 DC/DC 转换器的典型应用
- LTC2946CMS 12V、50A 功率、电荷和能量监视器的典型应用
- 用于手机的 4-LED 白光 LED 驱动器
- NCP300LSN44T1 4.4V 窗口电压检测器的典型应用
- LOBSTER-3D打印主板