DS芯片C语言程序.pdf

上传人:hg158****2095 文档编号:82126123 上传时间:2023-03-24 格式:PDF 页数:8 大小:353.37KB
返回 下载 相关 举报
DS芯片C语言程序.pdf_第1页
第1页 / 共8页
DS芯片C语言程序.pdf_第2页
第2页 / 共8页
点击查看更多>>
资源描述

《DS芯片C语言程序.pdf》由会员分享,可在线阅读,更多相关《DS芯片C语言程序.pdf(8页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、 DS 芯片 C 语言程序 The Standardization Office was revised on the afternoon of December 13,2020#include/包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义#include sbit SCK=P36;/时钟 sbit SDA=P34;/数据 sbit RST=P35;/DS1302复位 sbit LS138A=P22;sbit LS138B=P23;sbit LS138C=P24;bit ReadRTC_Flag;/定义读 DS1302标志 unsigned char l_tmpdate7=0

2、,0,12,15,5,3,8;/秒分时日月周年 08-05-15 12:00:00 unsigned char l_tmpdisplay8;code unsigned char write_rtc_address7=0 x80,0 x82,0 x84,0 x86,0 x88,0 x8a,0 x8c;/秒分时日月周年 最低位读写位 code unsigned char read_rtc_address7=0 x81,0 x83,0 x85,0 x87,0 x89,0 x8b,0 x8d;code unsigned char table=0 x3f,0 x06,0 x5b,0 x4f,0 x66,

3、0 x6d,0 x7d,0 x07,0 x7f,0 x6f,0 x40;/共阴数码管 0-9 -熄灭表 /*/*函数声明 */*/void Write_Ds1302_byte(unsigned char temp);void Write_Ds1302(unsigned char address,unsigned char dat);unsigned char Read_Ds1302(unsigned char address);void Read_RTC(void);/read RTC void Set_RTC(void);/set RTC void InitTIMER0(void);/ini

4、tal timer0/*/*主函数 */*/void main(void)InitTIMER0();/初始化定时器 0 Set_RTC();/写入时钟值,如果使用备用电池时候,不需要没每次上电写入,此程序应该屏蔽 while(1)if(ReadRTC_Flag)ReadRTC_Flag=0;Read_RTC();l_tmpdisplay0=l_tmpdate2/16;/数据的转换,因我们采用数码管 09的显示,将数据分开 l_tmpdisplay1=l_tmpdate2&0 x0f;l_tmpdisplay2=10;/加入-l_tmpdisplay3=l_tmpdate1/16;l_tmpdi

5、splay4=l_tmpdate1&0 x0f;l_tmpdisplay5=10;l_tmpdisplay6=l_tmpdate0/16;l_tmpdisplay7=l_tmpdate0&0 x0f;/*/*定时器 0 初始化 */*/void InitTIMER0(void)TMOD|=0 x01;/定时器设置 16 位 TH0=0 xef;/初始化值 TL0=0 xf0;ET0=1;TR0=1;EA=1;/*/*写一个字节 */*/void Write_Ds1302_Byte(unsigned char temp)unsigned char i;for(i=0;i=1;/右移一位 SCK=

6、1;/*/*写入 DS1302 */*/void Write_Ds1302(unsigned char address,unsigned char dat)RST=0;_nop_();SCK=0;_nop_();RST=1;_nop_();/启动 Write_Ds1302_Byte(address);/发送地址 Write_Ds1302_Byte(dat);/发送数据 RST=0;/恢复 /*/*读出 DS1302数据 */*/unsigned char Read_Ds1302(unsigned char address)unsigned char i,temp=0 x00;RST=0;_no

7、p_();_nop_();SCK=0;_nop_();_nop_();RST=1;_nop_();_nop_();Write_Ds1302_Byte(address);for(i=0;i=1;/右移一位 _nop_();_nop_();_nop_();SCK=1;RST=0;_nop_();/以下为 DS1302复位的稳定时间 _nop_();RST=0;SCK=0;_nop_();_nop_();_nop_();_nop_();SCK=1;_nop_();_nop_();SDA=0;_nop_();_nop_();SDA=1;_nop_();_nop_();return(temp);/返回

8、/*/*读时钟数据 */*/void Read_RTC(void)/读取 日历 unsigned char i,*p;p=read_rtc_address;/地址传递 for(i=0;i7;i+)/分 7 次读取 秒分时日月周年 l_tmpdatei=Read_Ds1302(*p);p+;/*/*设定时钟数据 */*/void Set_RTC(void)/设定 日历 unsigned char i,*p,tmp;for(i=0;i7;i+)/BCD处理 tmp=l_tmpdatei/10;l_tmpdatei=l_tmpdatei%10;l_tmpdatei=l_tmpdatei+tmp*16

9、;Write_Ds1302(0 x8E,0X00);p=write_rtc_address;/传地址 for(i=0;i7;i+)/7次写入 秒分时日月周年 Write_Ds1302(*p,l_tmpdatei);p+;Write_Ds1302(0 x8E,0 x80);/*/*定时器中断函数 */*/void tim(void)interrupt 1 using 1 /中断,用于数码管扫描 static unsigned char i,num;TH0=0 xf5;TL0=0 xe0;P0=tablel_tmpdisplayi;/查表法得到要显示数字的数码段 switch(i)case 0:L

10、S138A=0;LS138B=0;LS138C=0;break;case 1:LS138A=1;LS138B=0;LS138C=0;break;case 2:LS138A=0;LS138B=1;LS138C=0;break;case 3:LS138A=1;LS138B=1;LS138C=0;break;case 4:LS138A=0;LS138B=0;LS138C=1;break;case 5:LS138A=1;LS138B=0;LS138C=1;break;case 6:LS138A=0;LS138B=1;LS138C=1;break;case 7:LS138A=1;LS138B=1;LS138C=1;break;i+;if(i=8)i=0;num+;if(10=num)/隔段时间读取 1302的数据。时间间隔可以调整 ReadRTC_Flag=1;/使用标志位判断 num=0;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 工作报告

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁