欢迎来到天天文库
浏览记录
ID:52533360
大小:30.85 KB
页数:44页
时间:2020-03-28
《灯七彩旋转LED综合效果程序.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、/************************DS1302驱动代码**********************/#include"NEW_8051.H"#include"task.h"/******************************DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0H~FDH,其中奇数为读操作,偶数为写操作。************************************/sbitT_CLK=P7^3。//DS1302引脚连接sbitT_IO=P7^2。sbitT_RST=
2、P7^1。//sbitACC0=ACC^0。//1bit数据存储位//sbitACC7=ACC^7。ucharstarts_time[7]={0x00,0x10,0x22,0x20,0x05,0x04,0x15}。//初始化后设置ucharSec。ucharCent。ucharHour。ucharYear。ucharDay。ucharWeek。ucharMonth。/******************************************************************///根据选择调整相应工程voidSet(ucharsel,ucharsel_1){uch
3、araddress,time。ucharmax,min。if(sel==1){address=0x84。max=23。min=0。}//小时if(sel==2){address=0x82。max=59。min=0。}//分钟if(sel==3){address=0x80。max=59。min=0。}//秒if(sel==4){address=0x88。max=12。min=1。}//月if(sel==5){address=0x86。max=31。min=1。}//日if(sel==6){address=0x8a。max=7。min=1。}//星期44/44time=R1302(addr
4、ess+1)/16*10+R1302(address+1)%16。//变成BCD码if(sel_1==1)time++。elsetime--。if(time>max)time=min。if(time5、putByte()功能:实时时钟写入一字节说明:往DS1302写入1Byte数据(内部函数)入口参数:d写入的数据返回值:无***********************************************************************/voidRTInputByte(uchard){ucharh。ACC=d。for(h=8。h>0。h--){T_IO=ACC0。/*相当于汇编中的RRC*/T_CLK=1。T_CLK=0。ACC=ACC>>1。}}/******************************************************6、**************函数名:RTOutputByte()功能:实时时钟读取一字节说明:从DS1302读取1Byte数据(内部函数)入口参数:无返回值:ACC设计:zhaojunjie日期:2002-03-19修改:日期:***********************************************************************/ucharRTOutputByte(void){ucharh。for(h=8。h>0。h--){44/44ACC=ACC>>1。/*相当于汇编中的RRC*/ACC7=T_IO。T_CLK=1。T_CLK=0。}retur7、n(ACC)。}/********************************************************************函数名:W1302()功能:往DS1302写入数据说明:先写地址,后写命令/数据(内部函数)调用:RTInputByte(),RTOutputByte()入口参数:ucAddr:DS1302地址,ucData:要写的数据返回值:无********************************
5、putByte()功能:实时时钟写入一字节说明:往DS1302写入1Byte数据(内部函数)入口参数:d写入的数据返回值:无***********************************************************************/voidRTInputByte(uchard){ucharh。ACC=d。for(h=8。h>0。h--){T_IO=ACC0。/*相当于汇编中的RRC*/T_CLK=1。T_CLK=0。ACC=ACC>>1。}}/******************************************************
6、**************函数名:RTOutputByte()功能:实时时钟读取一字节说明:从DS1302读取1Byte数据(内部函数)入口参数:无返回值:ACC设计:zhaojunjie日期:2002-03-19修改:日期:***********************************************************************/ucharRTOutputByte(void){ucharh。for(h=8。h>0。h--){44/44ACC=ACC>>1。/*相当于汇编中的RRC*/ACC7=T_IO。T_CLK=1。T_CLK=0。}retur
7、n(ACC)。}/********************************************************************函数名:W1302()功能:往DS1302写入数据说明:先写地址,后写命令/数据(内部函数)调用:RTInputByte(),RTOutputByte()入口参数:ucAddr:DS1302地址,ucData:要写的数据返回值:无********************************
此文档下载收益归作者所有