首页 > 算法 > 神经网络 > ds1302初始化后是多少,关于时钟ds1302读写问题

ds1302初始化后是多少,关于时钟ds1302读写问题

来源:整理 时间:2023-09-03 14:59:38 编辑:亚灵电子网 手机版

1,关于时钟ds1302读写问题

ds1302_IO=ACC0; 这一步的时候已经将需写数最低位发送给引脚了然后ds1302_SCLK=1;后产生上升沿,此时数据已经从引脚写入接着将电平下拉,然后移位准备下一位的写入

关于时钟ds1302读写问题

2,ds1302初始化失败全部显示85

在每个IO口状态改变的后面加上延时空指令你这是操作太快了SCLK=0;delayus();//可用几个NOP()的指令 SCLK=1;

ds1302初始化失败全部显示85

3,ds1302精振用初始化么

1.正品一般不用初始化,上电就可起振。国产的质量比较差,需要设置一下晶振起振位(秒寄存器高位设为0)2.电源只要在允许范围内就可以,不过备用电源高的话,无法进行涓流充电了。
ds1302不用初始化,编写一段程序拷进去,把你需要的初试时间写进去就可以了。ds1302可以接一个纽扣电源,即使断电ds1302内部依然计时

ds1302精振用初始化么

4,为什么ds1302初始化后就自动运行

初始化程序中,如果对寄存器操作后刚好开启了计时运行位当然就自动运行了。33M的晶振跟1302没有关系,1302有自己的晶振,是32.768khz的。单片机晶振频率不影响1302走时快慢。

5,ds1302掉电保护就是一开始初始化一次再后来就不初始化是怎

1302有独立的晶振和电源。初始化(设置时间)后就一直按照这个时间在走。void init_1302()//初始化 write_date(0x8e,0x00); //写入允许 write_date(0x80,0x00); //秒 write_date(0x82,0x58); //分 write_date(0x84,0x15); //小时 write_date(0x8e,0x80); //写入禁止}void main()//主程序 init_1302(); while(1) get_time(); display(); }}程序进去后就一直在走,不需要再初始化了。如果你再初始化的话时间就复位了。。。

6,DS1302初始化就是给它一些时分秒年月日周初值我看了数据手册不太懂

首先要写保护寄存器,在对时钟或RAM写前WP一定要为0 WP是秒的最高位..列如:1.写秒:先写 DS1302Write(DS1302_SECOND_WRITE,0x00);//允许写 在写 DS1302Write(DS1302_SECOND_WRITE,0x56); 最后 DS1302Write(DS1302_SECOND_WRITE,0x80);//不允许写

7,ds1302写初始值请问在地址后面括号里那些代表什么为什么要这

ds_rd(0x81); //读取秒 ds_data=ds_data&0x80; if(ds_data==0x80) //判断是否在运行 没有运行执行 { ds_write(0x8e,0x00);//关闭写保护 ds_write(0x8c,0x11);//年 此处均当BCD码看 非十六进制 ds_write(0x88,0x10);//月 ds_write(0x86,0x20);//日 ds_write(0x84,0x01);//时 ds_write(0x82,0x18);//分 ds_write(0x80,0x00);//秒 ds_write(0x8a,0x05);//星期 ds_write(0x8f,0x80);//打开写保护 } 有的人非要在这把16进制转成BCD码写入 实在没必要 把16进制当10进制数看就可以了

8,DS1302实时时钟的问题

void Set_RTC(void) //设定 日历 unsigned char i,*p,tmp,flag=0; flag = Read_Ds1302(0xc1); if(flag != 0xf0) for(i=0;i<7;i++) //BCD处理 tmp=l_tmpdate[i]/10; l_tmpdate[i]=l_tmpdate[i]%10; l_tmpdate[i]=l_tmpdate[i]+tmp*16; } Write_Ds1302(0x8E,0x00); p=write_rtc_address; //传地址 for(i=0;i<7;i++) //7次写入 秒分时日月周年 Write_Ds1302(*p,l_tmpdate[i]); p++; } Write_Ds1302(0xc0,0xf0); //判断是否初始化一次标识写入 Write_Ds1302(0x8E,0x80); //写保护设置 }}我是这样子做的,在C0寄存器写0xf0,每次上电都会读0xc1这个位,如果不是0xf0,就设置时间,最后写这个位,如果是0xc0,就不用设置了,这样就不会每次上电都初始化了,

9,DS1302初始化和读取的程序汇编语言

;DS1302汇编程序调用(单字节模式)2009年04月17日nbsp;下午nbsp;19:19;时钟芯片DS1302nbsp;的程序(汇编);时钟芯片DS1302nbsp;的程序(汇编);*********************************************************************;nbsp;公司名称:;nbsp;模块名称:DS1302.a51;nbsp;功nbsp;能:实时时钟模块nbsp;时钟芯片型号:DS1302;nbsp;说nbsp;明:(修改版);nbsp;程序设计:;nbsp;设计时间:2009.04.17;nbsp;版nbsp;本nbsp;号:20090417;*********************************************************************/T_CLKnbsp;Bitnbsp;P3.2nbsp;;实时时钟时钟线引脚T_IOnbsp;Bitnbsp;P3.3nbsp;;实时时钟数据线引脚T_RSTnbsp;Bitnbsp;P3.4nbsp;;实时时钟复位线引脚;**********************************************************SECONDnbsp;nbsp;nbsp;EQUnbsp;nbsp;nbsp;nbsp;50Hnbsp;nbsp;nbsp;nbsp;nbsp;nbsp;;秒寄存器MINUTEnbsp;nbsp;nbsp;EQUnbsp;nbsp;nbsp;nbsp;51Hnbsp;nbsp;nbsp;nbsp;nbsp;nbsp;;分寄存器HOURnbsp;nbsp;nbsp;nbsp;nbsp;EQUnbsp;nbsp;nbsp;nbsp;52Hnbsp;nbsp;nbsp;nbsp;nbsp;nbsp;;时寄存器DAYnbsp;nbsp;nbsp;nbsp;nbsp;nbsp;EQUnbsp;nbsp;nbsp;nbsp;53Hnbsp;nbsp;nbsp;nbsp;nbsp;nbsp;;号寄存器MONTHnbsp;nbsp;nbsp;nbsp;EQUnbsp;nbsp;nbsp;nbsp;54Hnbsp;nbsp;nbsp;nbsp;nbsp;nbsp;;月寄存器WEEKnbsp;nbsp;nbsp;nbsp;nbsp;EQUnbsp;nbsp;nbsp;nbsp;55Hnbsp;nbsp;nbsp;nbsp;nbsp;nbsp;;星期寄存器YEARnbsp;nbsp;nbsp;nbsp;nbsp;EQUnbsp;nbsp;nbsp;nbsp;56Hnbsp;nbsp;nbsp;nbsp;nbsp;nbsp;;年寄存器nbsp;ORGnbsp;0000Hnbsp;SJMPnbsp;STARTnbsp;ORGnbsp;0040Hnbsp;;**************************************;功nbsp;能:给秒nbsp;分nbsp;时nbsp;日nbsp;月nbsp;星期nbsp;年赋初值;**************************************START:nbsp;MOVnbsp;SECOND,#00Hnbsp;nbsp;MOVnbsp;MINUTE,#06Hnbsp;nbsp;MOVnbsp;HOUR,#17Hnbsp;nbsp;MOVnbsp;DAY,#00Hnbsp;nbsp;MOVnbsp;MONTH,#00Hnbsp;nbsp;MOVnbsp;WEEK,#00Hnbsp;nbsp;MOVnbsp;YEAR,#00Hnbsp;nbsp;LCALLnbsp;SET1302nbsp;nbsp;LCALLnbsp;GET1302nbsp;nbsp;LCALLnbsp;DISPLAYMAIN:nbsp;nbsp;MOVnbsp;R5,#25nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;MOVnbsp;TMOD,#01Hnbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;MOVnbsp;TH0,#63Hnbsp;nbsp;;置定时器初值(定时40ms)nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;MOVnbsp;TL0,#0C0Hnbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;SETBnbsp;TR0nbsp;nbsp;nbsp;;启动定时器0LP1:nbsp;nbsp;nbsp;nbsp;JBCnbsp;TF0,LP2nbsp;nbsp;nbsp;;查询计数溢出nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;SJMPnbsp;LP1nbsp;nbsp;nbsp;;未到40nbsp;ms继续计数LP2:nbsp;nbsp;nbsp;nbsp;MOVnbsp;TH0,#63Hnbsp;nbsp;;重新置定时器初值nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;MOVnbsp;TL0,#0C0Hnbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;LCALLnbsp;DISPLAYnbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;;显示nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;DJNZnbsp;R5,LP1nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;;未到1nbsp;S继续循环nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;LCALLnbsp;GET1302nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;;每过1s从DS1302读取一次时间nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;MOVnbsp;nbsp;R5,#25nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;SJMPnbsp;LP1DISPLAY:nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;MOVnbsp;R3,SECONDnbsp;nbsp;nbsp;nbsp;nbsp;LCALLnbsp;CHAGnbsp;nbsp;MOVnbsp;P2,#0FFHnbsp;nbsp;nbsp;nbsp;nbsp;nbsp;MOVnbsp;P0,R2nbsp;nbsp;nbsp;;段码nbsp;nbsp;SETBnbsp;P2.0nbsp;nbsp;nbsp;;位码nbsp;nbsp;NOPnbsp;nbsp;CLRnbsp;P2.0nbsp;nbsp;LCALLnbsp;DELAYnbsp;nbsp;MOVnbsp;P2,#0FFHnbsp;nbsp;MOVnbsp;P0,R3nbsp;nbsp;SETBnbsp;P2.1nbsp;nbsp;NOPnbsp;nbsp;CLRnbsp;P2.1nbsp;nbsp;LCALLnbsp;DELAYnbsp;nbsp;nbsp;MOVnbsp;R3,MINUTEnbsp;nbsp;nbsp;nbsp;nbsp;LCALLnbsp;CHAGnbsp;nbsp;MOVnbsp;P2,#0FFHnbsp;nbsp;nbsp;nbsp;nbsp;nbsp;MOVnbsp;P0,R2nbsp;nbsp;nbsp;;段码nbsp;nbsp;SETBnbsp;P2.2nbsp;nbsp;nbsp;;位码nbsp;nbsp;NOPnbsp;nbsp;CLRnbsp;P2.2nbsp;nbsp;LCALLnbsp;DELAYnbsp;nbsp;MOVnbsp;P2,#0FFHnbsp;nbsp;MOVnbsp;P0,R3nbsp;nbsp;SETBnbsp;P2.3nbsp;nbsp;NOPnbsp;nbsp;CL

10,关于51单片机ds1302的几个问题 请问一下ds1302初始化时Ds1302

第一个问题,向1302的秒地址写0,第二个问题,在输入的时候也可以不暂停,输入完成后向1302中写入时间后自动启动。最后一个因为秒的最高位永远是0
void v_rtinputbyte(uchar ucda) uchar i;acc = ucda;for(i=8; i>0; i--)t_io = acc0; //相当于汇编中的 rrc t_clk = 1;t_clk = 0;acc = acc >> 1; } }/******************************************************************** ** 名称: uchar uc_rtoutputbyte* 说明: * 功能: 从ds1302读取1byte数据* 调用: * 输入: * 返回值: acc***********************************************************************/uchar uc_rtoutputbyte(void) uchar i;for(i=8; i>0; i--)acc = acc >>1; //相当于汇编中的 rrc acc7 = t_io;t_clk = 1;t_clk = 0;} return(acc); }/******************************************************************** ** 名称: v_w1302* 说明: 先写地址,后写命令/数据* 功能: 往ds1302写入数据* 调用: v_rtinputbyte() * 输入: ucaddr: ds1302地址, ucda: 要写的数据* 返回值: 无***********************************************************************/void v_w1302(uchar ucaddr, uchar ucda)t_rst = 0;t_clk = 0;t_rst = 1;v_rtinputbyte(ucaddr); //地址,命令 v_rtinputbyte(ucda); //写1byte数据t_clk = 1;t_rst =0;} /******************************************************************** ** 名称: uc_r1302* 说明: 先写地址,后读命令/数据* 功能: 读取ds1302某地址的数据* 调用: v_rtinputbyte() , uc_rtoutputbyte()* 输入: ucaddr: ds1302地址* 返回值: ucda :读取的数据***********************************************************************/uchar uc_r1302(uchar ucaddr)uchar ucda;t_rst = 0;t_clk = 0;t_rst = 1;v_rtinputbyte(ucaddr); //地址,命令 ucda = uc_rtoutputbyte(); //读1byte数据 t_clk = 1;t_rst =0;return(ucda);}/******************************************************************** ** 名称: v_burstw1302t* 说明: 先写地址,后写数据(时钟多字节方式)* 功能: 往ds1302写入时钟数据(多字节方式)* 调用: v_rtinputbyte() * 输入: psecda: 时钟数据地址 格式为: 秒 分 时 日 月 星期 年 控制* 8byte (bcd码) 1b 1b 1b 1b 1b 1b 1b 1b* 返回值: 无***********************************************************************/void v_burstw1302t(uchar *psecda)uchar i;v_w1302(0x8e,0x00); //控制命令,wp=0,写操作?t_rst = 0;t_clk = 0;t_rst = 1;v_rtinputbyte(0xbe); //0xbe:时钟多字节写命令 for (i=8;i>0;i--) //8byte = 7byte 时钟数据 + 1byte 控制v_rtinputbyte(*psecda); //写1byte数据psecda++;}t_clk = 1;t_rst =0;} /******************************************************************** ** 名称: v_burstr1302t* 说明: 先写地址,后读命令/数据(时钟多字节方式)* 功能: 读取ds1302时钟数据* 调用: v_rtinputbyte() , uc_rtoutputbyte()* 输入: psecda: 时钟数据地址 格式为: 秒 分 时 日 月 星期 年 * 7byte (bcd码) 1b 1b 1b 1b 1b 1b 1b* 返回值: ucda :读取的数据***********************************************************************/void v_burstr1302t(uchar *psecda)uchar i;t_rst = 0;t_clk = 0;t_rst = 1;v_rtinputbyte(0xbf); //0xbf:时钟多字节读命令 for (i=8; i>0; i--) *psecda = uc_rtoutputbyte(); //读1byte数据 psecda++;}t_clk = 1;t_rst =0;}/******************************************************************** ** 名称: v_burstw1302r* 说明: 先写地址,后写数据(寄存器多字节方式)* 功能: 往ds1302寄存器数写入数据(多字节方式)* 调用: v_rtinputbyte() * 输入: preda: 寄存器数据地址* 返回值: 无***********************************************************************/void v_burstw1302r(uchar *preda)uchar i;v_w1302(0x8e,0x00); //控制命令,wp=0,写操作?t_rst = 0;t_clk = 0;t_rst = 1;v_rtinputbyte(0xfe); //0xbe:时钟多字节写命令 for (i=31;i>0;i--) //31byte 寄存器数据 v_rtinputbyte(*preda); //写1byte数据preda++;}t_clk = 1;t_rst =0;} /******************************************************************** ** 名称: uc_burstr1302r* 说明: 先写地址,后读命令/数据(寄存器多字节方式)* 功能: 读取ds1302寄存器数据* 调用: v_rtinputbyte() , uc_rtoutputbyte()* 输入: preda: 寄存器数据地址* 返回值: 无***********************************************************************/void v_burstr1302r(uchar *preda)uchar i;t_rst = 0;t_clk = 0;t_rst = 1;v_rtinputbyte(0xff); //0xbf:时钟多字节读命令 for (i=31; i>0; i--) //31byte 寄存器数据 *preda = uc_rtoutputbyte(); //读1byte数据 preda++;}t_clk = 1;t_rst =0;}/******************************************************************** ** 名称: v_set1302* 说明: * 功能: 设置初始时间* 调用: v_w1302() * 输入: psecda: 初始时间地址。初始时间格式为: 秒 分 时 日 月 星期 年 * 7byte (bcd码) 1b 1b 1b 1b 1b 1b 1b* 返回值: 无***********************************************************************/void v_set1302(uchar *psecda) uchar i;uchar ucaddr = 0x80; v_w1302(0x8e,0x00); //控制命令,wp=0,写操作?for(i =7;i>0;i--)v_w1302(ucaddr,*psecda); //秒 分 时 日 月 星期 年 psecda++;ucaddr +=2;}v_w1302(0x8e,0x80); //控制命令,wp=1,写保护?}/******************************************************************** ** 名称: v_get1302* 说明: * 功能: 读取ds1302当前时间* 调用: uc_r1302() * 输入: uccurtime: 保存当前时间地址。当前时间格式为: 秒 分 时 日 月 星期 年 * 7byte (bcd码) 1b 1b 1b 1b 1b 1b 1b* 返回值: 无***********************************************************************/void v_get1302(uchar uccurtime[]) uchar i;uchar ucaddr = 0x81;for (i=0;i<7;i++)uccurtime[i] = uc_r1302(ucaddr); //格式为: 秒 分 时 日 月 星期 年 ucaddr += 2;}}
文章TAG:ds1302初始化后是多少初始初始化多少

最近更新

  • 470d多少pin电源线,蓝宝石470d要用多大的电源470d多少pin电源线,蓝宝石470d要用多大的电源

    蓝宝石470d要用多大的电源满载达到208w电源必需额定450W2,rx480用的是多少pin的电源接口Rx480是单6pin供电单6pin电源接口啊,上面有些啊,看显卡接口旁边也可以看到的。3,买了块470d显卡发.....

    神经网络 日期:2024-04-11

  • 5532 前置电路图,ne5532预调谐电路图5532 前置电路图,ne5532预调谐电路图

    使用功率放大器电路的前一级,时基电路可以用作振荡器或延迟电路,但不能用作放大器电路。音色和音调电路可以从无线电杂志中的演示电路中选择,它们可以由正负电源供电-或者所有电路都可以.....

    神经网络 日期:2024-04-10

  • 电平变换电路,2/4电平转换电平变换电路,2/4电平转换

    连接:CMOS电路和TTL电路可以通过电平转换来匹配它们的电平域值。电平转换,完整的MOS晶体管双向电平转换电路如下图所示,在I中经常使用,输出高压低于电源电压,本电路适用于UART/USART串行端.....

    神经网络 日期:2024-04-10

  • 相机电路知识,摄像机电路相机电路知识,摄像机电路

    否则,可能会导致摄像头电路短路。根据驱动电路的相数,驱动电路可分为单相、两相和三相,数码相机镜头保养知识镜头是数码相机的重要组成部分,电路通电后,超声波电机目前将采用两相输入,当被触.....

    神经网络 日期:2024-04-10

  • 电网电压波动导致跳闸,电压波动导致跳闸电网电压波动导致跳闸,电压波动导致跳闸

    过电压:电路中的过电压可能导致跳闸保护,这可能是由电网电压波动或雷电引起的。在此期间,用电量较小时电网电压会升高,不良线路或电器的回波电压会升高并泄漏,微动开关启动器插在电源上不.....

    神经网络 日期:2024-04-09

  • 电动转向电路图,单相电机正反转电路图电动转向电路图,单相电机正反转电路图

    电动机根据不同的电源分为DC电动机和交流电动机,电力系统中的大多数电动机是交流电动机。参考电路图(如图所示,电机在规定时间范围内连续可逆正反转运行的自动控制电路,能让马达反转,电机正.....

    神经网络 日期:2024-04-09

  • 贴片电阻0603多少瓦,贴片电阻0603在生产中可以替代0805吗一个是18W一个是110贴片电阻0603多少瓦,贴片电阻0603在生产中可以替代0805吗一个是18W一个是110

    贴片电阻0603在生产中可以替代0805吗一个是18W一个是110应该是可以的,工程那边能通过就没什么大问题2,0603封装的贴片电阻功率是多大0603封装的贴片电阻功率是0.1W这个很便宜,一厘多钱一.....

    神经网络 日期:2024-04-09

  • 增益可控放大电路实验,可控增益放大器电路课程增益可控放大电路实验,可控增益放大器电路课程

    可编程增益放大器电路可以对模拟信号进行放大、转换和滤波,将设备中的多个功能模块互连,重构电路,并调整电路的增益、带宽和阈值。输入信号和输出信号被反转;它具有大的电流和电压增益;通常.....

    神经网络 日期:2024-04-09