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

s3c2410实时时钟(RTC)

发布时间:2020-05-28 发布时间:
|

在嵌入式系统中,实时时钟单元可以提供可靠的时钟,包括时、分、秒、年、月、日。可以提供毫秒级的时钟中断。
与实时时钟相关的寄存器:
实时时钟控制寄存器(RTCCON):
实时时钟控制设置。
告警控制寄存器:
年、月、日、时、分、秒告警使能标志,当告警时间寄存器时间到达时引发实时时钟报警中断。
实时时钟计数器:
用与存储时钟计数值,每过一个时钟减一,到零时引发实时时钟时间滴答中断。
告警时间寄存器:
存储告警时间的年、月、日、时、分、秒值
实时时钟寄存器:
保存实际时间。

实时时钟编程步骤:
1、初始化时钟
2、向实时时钟寄存器写入当前的时间,即效表
3、读取时间显示


下面为试验代码
struct time 
{
 unsigned char year;
 unsigned char mon;
 unsigned char day;
 unsigned char weekday;
 unsigned char hour;
 unsigned char min;
 unsigned char sec;

};


void inittime()
{
 rRTCCON=0x0;
}

void settime(struct time *t)
{
 rRTCCON|=0x01;
 rBCDYEAR=t->year;
 rBCDMON=t->mon;
 rBCDDAY=t->weekday;
 rBCDDATE=t->day;
 rBCDHOUR=t->hour;
 rBCDMIN=t->min;
 rBCDSEC=t->sec; 
 rRTCCON&=0xFE;
 
}

void gettime(struct time *t)
{
 rRTCCON|=0x01;
 while(1)
  {  
   t->year=rBCDYEAR;
   t->mon=rBCDMON;
   t->weekday=rBCDDAY;
   t->day=rBCDDATE;
   t->hour=rBCDHOUR;
   t->min=rBCDMIN;
   t->sec=rBCDSEC;
   if(t->sec !=0)
    break;
  
  }
 rRTCCON&=0xFE;
}

void enabletimeint(char value)
{
 rRTCCON|=0x01;
 value|=0x80;
 rTICNT=value;
 rRTCCON&=0xFE;
}

void disenabletimeint(void)
{
 rRTCCON|=0x01;
 rTICNT&=0x7f;
 rRTCCON&=0xFE;

}

void setrtcalm(char value)
{
  rRTCCON|=0x01;
  rRTCALM=value;
  rRTCCON&=0xFE;
}

void setalmtime(struct time *t)

  rRTCCON|=0x01;
  rALMYEAR=t->year;
  rALMMON=t->mon;
  rALMDATE=t->day;
  rALMHOUR=t->hour;
  rALMMIN=t->min;
  rALMSEC=t->sec; 
  rRTCCON&=0xFE;
}


void printtime(struct time *t)
{
 char h,l; 
 l=t->year&0x0F;
 h=t->year&0xF0;
 h=h>>4;
 uart0_sendchar('2');
 uart0_sendchar('0');
 uart0_sendchar(h+48);
 uart0_sendchar(l+48);
 uart0_sendchar('.');

 l=t->mon&0x0F;
 h=t->mon&0xF0;
 h=h>>4;
 uart0_sendchar(h+48);
 uart0_sendchar(l+48);
 uart0_sendchar('.');
 
 l=t->day&0x0F;
 h=t->day&0xF0;
 h=h>>4;
 uart0_sendchar(h+48);
 uart0_sendchar(l+48);
 uart0_sendchar(' ');
 uart0_sendchar(' ');
 
 l=t->hour&0x0F;
 h=t->hour&0xF0;
 h=h>>4;
 uart0_sendchar(h+48);
 uart0_sendchar(l+48);
 uart0_sendchar(':');
 
 l=t->min&0x0F;
 h=t->min&0xF0;
 h=h>>4;
 uart0_sendchar(h+48);
 uart0_sendchar(l+48);
 uart0_sendchar(':');
 
 l=t->sec&0x0F;
 h=t->sec&0xF0;
 h=h>>4;
 uart0_sendchar(h+48);
 uart0_sendchar(l+48);
 
 uart0_sendchar('\r');
 uart0_sendchar('\n');
}


关键字:s3c2410  实时时钟  RTC 

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

热门文章 更多
PIC单片机基础知识之二