qt210移植的rtc

#include "myprintf.h"
#define BCDYEAR  (*(volatile unsigned long *)0xE2800088 )
#define BCDMON   (*(volatile unsigned long *)0xE2800084 )
#define BCDDAY   (*(volatile unsigned long *)0xE2800080 )
#define BCDDAYWEEK  (*(volatile unsigned long *)0xE280007c )
#define BCDHOUR  (*(volatile unsigned long *) 0xE2800078) 
#define BCDMIN  (*(volatile unsigned long *)0xE2800074) 
#define BCDSEC  (*(volatile unsigned long*)0xE2800070)
#define RTCCON	(*(volatile unsigned long *)0xE2800040)
char *weekday[] = {" ","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};
void rtc_show_time(void)
{
	unsigned long year,month,date,hour,min,sec;
	unsigned long tday;
	RTCCON|=(1<<0);
	year = BCDYEAR;
	year = 0x2000 + year;
	month= BCDMON;
	date = BCDDAYWEEK;
	hour = BCDHOUR;
	min  = BCDMIN;
	sec  = BCDSEC;
	tday  = BCDDAY;
	RTCCON&=~(1<<0);
	my_printf("%x : %x : %x  %s,  %x/%x/%x\r\n", hour, min, sec, weekday[tday], month, date, year);
}
void rtc_set_time()
{
	RTCCON|=(1<<0);
		// 初始值为重置值
	unsigned long year = 13;
	unsigned long month = 2;
	unsigned long date = 5;
	unsigned long hour = 22;
	unsigned long min = 36;
	unsigned long sec = 0;
	unsigned long weekday= 3;

	//将时间转化为BCD码
	year = ( ((year/100)<<8) +(((year/10)%10)<<4) + (year%10)  );
	month  = ( ((month/10)<<4)+ (month%10) );
	date = ( ((date/10)<<4) + (date%10) );
	weekday = (weekday%10);							
	hour =( ((hour/10)<<4) + (hour%10) );
	min  =( ((min/10)<<4)  + (min%10) );
	sec  =( ((sec/10)<<4)  + (sec%10) );


	// 保存BCD码
	BCDSEC  = sec;
	BCDMIN  = min;
	BCDHOUR = hour;
	BCDDAYWEEK = date;
	BCDDAY  = weekday;
	BCDMON  = month;
	BCDYEAR = year;
	RTCCON&=~(1<<0);
	
	my_printf("reset success\r\n");
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值