DS芯片C语言程序_第1页
DS芯片C语言程序_第2页
DS芯片C语言程序_第3页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、DS芯片C语言程序The Standardization Office was revised on the afternoon of December 13, 2020#include<>/包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义#include <>sbit SCK=P3A6;时钟sbit SDA二P3人4;数据sbit RST = P3A5;/ DS 1302 复位sbit LS138A=P2A2;sbit LS138B二P2T;sbit LS138C=P2A4;bit ReadRTC.Flag;/定义读 DS 1302 标志unsigned

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

3、 6d,0x7d,0x07,0x7f,0x6f,0x40;共阴数码管0-9 熄灭,表/ /*函数声明*/void Write_Ds 1302_byte(unsigned char temp);void Write_Ds 1302( unsigned char addressjinsigned char dat);unsigned char Read_Dsl302 ( unsigned char address ); void Read_RTC(void)y/read RTC void Set_RTC(void); /set RTCvoid InitTIMERO(void);/inital ti

4、merO/ /*主函数*/jcjjc/void niain(void)InitTIMERO();初始化定时器0Set.RTCO; 写入时钟值,如果使用备用电池时候,不需要没每次上电写入,此程序应该屏蔽while(l)if(ReadRTC_Flag)Read RT C_F1 ag=O;Read_RTC();数据的转加Ltmpdisplay0=l_tmpdate2/l 6;换,因我们采用数码管09的显示,将数据分开Ltmpdisplayf 1 =l_tmpdate2 &OxOf;Ltmpdisplay2=l 0;入叮l_tmpdisplay =l_tmpdatel/16; l_tmpdis

5、play4=l_tmpdate l&OxOf;Ltmpdisplay 5 =10;l_tmpdisplay6=l_tmpdate0/16; l_tmpdisplay7=Ltmpdate0&OxOf;jjc/*定时器0初始化*/void InitTIMERO(void)TMODI=0x01;/定时器设置16位TH0=0xef;/初始化值TLO=OxfO;ETO=1;TRO=1;EA=1;)/C5C5C5C5C5C5Cjjc/写一个字节*/5C 5C5C5C5C5C5C5C5C5C/void Write_Ds 1302_Byte(unsigned char temp) unsign

6、ed char i;for (i=0;iv8;i+) 循环8次写入数据SCK=0;SDA=temp&OxO 1; 每次传输低字节temp»= 1;右移一位SCK=1;)/*写入 DS 1302*/5C5C5C5C5C5C5C5C/void Write_Ds 1302( unsigned char address,unsigned char dat) RST=0;op_();SCK=0;op_();RST=1;发送地址发送数据jjc/*读出DS 1302数据*/Write_Dsl 302_Byte(address);Write_Dsl 302_Byte(dat);恢复RST=O

7、;/5C5C5C5C PC5C PC5C PC5C PC5C/unsigned char Read_Dsl302 ( unsigned char address ) unsigned char i,temp=0x00:RST=0;op_();op_();SCK=0;op_();op_();RST=1;op_();op_();Write_Ds 1302_Byte(address);for (i=0;i<&i+)循环8次读取数据if(SDA)templ=0x80;SCK=0;temp»= 1;op_();_nop_();_nop_();SCK=1;RST=0;每次传输低字节

8、右移一位_n°P_();以下为DS 1302复位的稳定时间】op_();RST=0;SCK=0;返回-nop J); 】op_(); 】op_(); -nop J); SCK=1; op_(); op_(); SDA=O; op_(); -nop J); SDA=1; op_(); op_();return (temp);/ /*读时钟数据*/jcjjc/void Read_RTC(void) 读取日历unsigned char i,*p;p=read_rtc_ad dress;地址传递for(i=0;i<7;i+)分7次读取秒分时日月周年Ltmpdatei=Read_Ds 1

9、302(*p);P+;1/*设定时钟数据*/5C5C5C5C5C5C5C5C/void Set_RTC(void)设定日历unsigned char i严pjmp; for(i=0;i<7;i+) /BCD 处理 tmp=Ltmpdate i/10;l_tmpdatei=l_tmpdatei% 10;Ltmpdatei=Ltmpdatei+tmp* 16;)Write.Dsl 302(0x8E,0X00);p=write_rtc_address; 传地址for(i=0;i<7;i+)7次写入秒分时曰月周年Write_Ds 1302(*p,l_tmpdatei);P+;Write.D

10、s 1302(0x8E,0x80);)jjc/*定时器中断函数*/ / void tim(void) interrupt 1 using 1中断,用于数码管扫描static unsigned char i5num;TH0=0xf5;TL0=0xe0;PO=tablel_tmpdisplayi;查表法得到要显示数字的数码段switch(i)case 0:LS138A=0; LS138B=O; LS138C=0; break;case 1:LS138A=1; LS138B=0; LS138C=0; break;case 2:LS138A=0; LS138B=1; LS138C=O: break;case 3:LS138A=1; LS138B=1; LS138C=0: break;case 4:LS138A=0; LS138B=O; LS138C=1; break;case 5:LS138A=1; LS138B=O; LS138C= 1; break;case

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论