单片机 > 单片机程序设计 > 详情

PCF8563时钟程序

发布时间:2024-10-18 发布时间:
|

PCF8563时钟程序

#include 
#include 
#define byte unsigned char 

sbit scl=0x81;                     //定义串行I/O口

sbit sda=0x80; 
idata byte rom_sed[9]; 
idata byte rom_rec[7]; 
idata byte j,k; 
bit flag,flag1; 

void delay(void)                         //延时子程序 

data byte i; 
for(i=0;i<6;i++); 


void I_start(void)                 //发送I2C总线起始条件子程序 

sda=1; 

scl=1; 
delay(); 
sda=0; 
delay(); 
scl=0; 



void I_stop(void)                 //I2C总线停止条件子程序 

sda=0; 

scl=1; 
delay(); 
sda=1; 
delay(); 


bit I_send(byte I_data)             //字节数据传送子程序 

data byte i; 
for(i=0;i<8;i++) 

sda=(bit)(I_data&0x80); 
I_data=I_data<<1; 

scl=1; 
delay(); 
scl=0; 



sda=1; 

;                            //准备接收ACK位 
scl=1; 

;                            //开始接收ack位 
flag=0; 
if(sda==0)flag=0; 
else flag=1;                     //返回(~I_cLOCk()); 
scl=0; 
return(flag); 


byte I_receive(void)                 //字节数据接收子程序 

data byte i; 
byte I_data=0; 
sda=1; 
for(i=0;i<8;i++) 

I_data*=2; 

scl=0; 
delay(); 
scl=1;  


if(sda==1)I_data++; 



scl=0;  



sda=0; 
if(flag1==0)                     //不是最后一个ACK 



scl=1; 
delay(); 
scl=0; 

else                        //是最后一个ACK 

sda=1;  


scl=1; 
delay(); 
scl=0; 
flag1=0; 

return(I_data); 


void main()                     //主程序 

data byte i; 
rom_sed[0]=0x00; rom_sed[1]=0x00; 
rom_sed[2]=0x00; rom_sed[3]=0x55; 
rom_sed[4]=0x23; rom_sed[5]=0x31; 
rom_sed[6]=0x06; rom_sed[7]=0x92; 
rom_sed[8]=0x99; 
for(i=0;i<255;i++)delay(); 
I_start(); 
if(~I_send(0xa2))                 //pcf_write地址 

if(~I_send(0x02))             //pcf_status寄存器地址 

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

if(~I_send(rom_sed[i])); 
else; 

I_stop(); 

else; 

else; 

start: I_start(); 
if(~I_send(0xa2))                 // pcf_write地址 

if(~I_send(0x02))             // pcf_status寄存器地址 

I_start(); 
if(~I_send(0xa3))             //写状态寄存器 

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

if(i==6) 
flag1=1; 
else 
flag1=0; 
rom_rec[i]=I_receive(); 
switch(i) 

case 1:rom_rec[i]=rom_rec[i]&0x7f;break; 
case 2: 
case 3:rom_rec[i]=rom_rec[i]&0x3f;break; 
case 4:rom_rec[i]=rom_rec[i]&0x07;break; 
case 5:rom_rec[i]=rom_rec[i]&0x9f;break; 
default:break; 


I_stop(); 



goto start; 


关键字:PCF8563  时钟程序 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/article_2018010937272.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
STM32学习笔记4:外部中断