嵌入式C语言——提取时分秒
2024-08-21 17:56:37
嵌入式C语言——提取时分秒
题目:
相关知识点
提取位:
插入位
用宏定义定义地址
#define TIME_Addr 0xFFFFC0000
#define TIME *(volatile int *)(TIME_Addr+2)
分析
- 时分秒分别占5位、6位、5位!
- 0x3F写成二进制111111六位进行&操作(适用于分)
- 0x1F写成二进制11111五位进行&操作(适用于时、秒)
提取小时
#define Time_Addr 0xFFFFC0000 //实时钟芯片的IO映像基址是OxFFFFC0000
#define TIME *(volatile int *)(Time_Addr+2) //时间存放在基址+2的寄存器中
int getHours()
{
int time=TIME;
return (time>>11)&0x1F;
}
插入小时
#define Time_Addr 0xFFFFC0000 //实时钟芯片的IO映像基址是OxFFFFC0000
#define TIME *(volatile int *)(Time_Addr+2) //时间存放在基址+2的寄存器中
void SetHours(int hours)
{
int oldtime=TIME;
int newtime;
newtime=oldtime&~(0x1F<<11);
newtime|=(hours&0x1F)<<11;
TIME=newtime;
}
提取分钟
#define Time_Addr 0xFFFFC0000 //实时钟芯片的IO映像基址是OxFFFFC0000
#define TIME *(volatile int *)(Time_Addr+2) //时间存放在基址+2的寄存器中
int getMinutes()
{
int time=TIME;
return (time>>5)&0x3F;
}
插入分钟
#define Time_Addr 0xFFFFC0000 //实时钟芯片的IO映像基址是OxFFFFC0000
#define TIME *(volatile int *)(Time_Addr+2) //时间存放在基址+2的寄存器中
void SetMinutes(int minutes)
{
int oldtime=TIME;
int newtime;
newtime=oldtime&~(0x3F<<5);
newtime|=(minutes&0x3F)<<5;
TIME=newtime;
}
提取秒
#define Time_Addr 0xFFFFC0000 //实时钟芯片的IO映像基址是OxFFFFC0000
#define TIME *(volatile int *)(Time_Addr+2) //时间存放在基址+2的寄存器中
int getSeconds()
{
int time=TIME;
return (time&0x1F)*2; //此处不考虑Seconds除2带来的误差,因此直接乘2
}
插入秒
#define Time_Addr 0xFFFFC0000 //实时钟芯片的IO映像基址是OxFFFFC0000
#define TIME *(volatile int *)(Time_Addr+2) //时间存放在基址+2的寄存器中
void SetSeconds(int seconds)
{
int oldtime=TIME;
int newtime;
newtime=oldtime&~0x1F;
newtime|=(seconds/2)&0x1F;
TIME=newtime;
}
最新文章
- 深入理解javascript作用域系列第五篇——一张图理解执行环境和作用域
- shell中三种引号的用法
- github的注册过程
- 【转】 BSS段 数据段 代码段 堆栈 指针 vs 引用
- css图片切换效果分析+翻译整理
- Android setStartOffset方法:设置启动时间
- POJ 1458 Common Subsequence 最长公共子序列 LCS
- Hadoop学习笔记(2)hadoop框架解析
- hdu 4291 A Short problem(矩阵+取模循环节)
- 最佳时间买入卖出股票 Best Time to Buy and Sell Stock LeetCode
- Golang 的内存管理(上篇)
- [洛谷P4234] 最小差值生成树
- sass报 error (Line XX: Invalid GBK character ";\xE4";) 的解决办法
- 小梵同学 GO!
- python的dir()和__dict__属性的区别
- [转] 理解NLP中的卷积&;&;Pooling
- POJ 3207 Ikki&#39;s Story IV - Panda&#39;s Trick (2-sat)
- vmware12安装centos7系统详解
- Full postback triggered by LinkButton inside GridView inside UpdatePanel
- [转]SSIS中的脚本—脚本任务