2017-2018-1 20155306 《信息安全系统设计基础》嵌入式C语言———提取设置时分秒
2017-2018-1 20155306 《信息安全系统设计基础》嵌入式C语言———提取设置时分秒
要求:根据下图,完成对时分秒的设置和提取。

示例及思路分析:


思路分析:以分钟为例,根据位运算的规则,设置分钟,只需要将寄存器中分钟对应的5-10bit清零,再进行赋值即可。即按位与上0x3F左移5位的取反结果,再按位或上所赋分钟值按位与上0x3F并左移5位的结果,最后赋值给寄存器即可。
提取分钟,只需要将寄存器中分钟对应的5-10bit右移5位至0-5bit,再将0-5bit的值提取出来即可。即将右移5位,再与上0x3F的结果返回即可。
同样地,提取时钟、秒钟的思路也是如此。其中,需要注意两个问题:1.时钟和秒钟所占位均为5bit,需要灵活调整0x3F为0x1F;2.0-4bit是秒钟除以2的结果,再设置提取的编程实现时需要注意。
代码实现:
设置时
#define TIME_Addr 0xFFFFC000
#define TIME *(volatile int *)(TIME_Addr+2)//这里需要将地址+2
void SetHours(int hours)
{
int oldtime = TIME;
int newtime = oldtime & ~ (0x1F << 11);//将时钟清零,保留分钟与秒钟
newtime | = (hours & 0x1F) << 11;//设置时钟时间
TIME = time;//改变时间寄存器的值
}
提取时
#define TIME_Addr 0xFFFFC000
#define TIME *(volatile int *)(TIME_Addr+2)//这里需要将地址+2
int getHours()
{
int time = TIME;
return (time >> 11) & 0x1F;
}
设置分
#define TIME_Addr 0xFFFFC000
#define TIME *(volatile int *)(TIME_Addr+2)//这里需要将地址+2
void SetMinutes(int minutes)
{
int oldtime = TIME;
int newtime = oldtime & ~ (0x3F << 5);//将分钟清零,保留时钟与秒钟
newtime | = (minutes & 0x3F) << 5;//设置分钟时间
TIME = newtime;//改变时间寄存器的值
}
提取分
#define TIME_Addr 0xFFFFC000
#define TIME *(volatile int *)(TIME_Addr+2)//这里需要将地址+2
int getMinutes()
{
int time = TIME;
return (time >> 5) & 0x3F;
}
设置秒
#define TIME_Addr 0xFFFFC000
#define TIME *(volatile int *)(TIME_Addr+2)//这里需要将地址+2
void SetSeconds(int seconds)
{
int oldtime = TIME;
int newtime = oldtime & ~ 0x1F;//将秒钟清零,保留时钟与分钟
newtime | = (seconds / 2) & 0x1F;//设置秒钟时间
TIME = newtime;//改变时间寄存器的值
}
提取秒
#define TIME_Addr 0xFFFFC000
#define TIME *(volatile int *)(TIME_Addr+2)//这里需要将地址+2
int getSeconds()
{
int time = TIME;
return (time & 0x1F) * 2; //此处不考虑Seconds除2带来的误差,因此直接乘2
}
2017-2018-1 20155306 《信息安全系统设计基础》嵌入式C语言———提取设置时分秒的更多相关文章
- 20155308《信息安全系统设计基础 嵌入式C语言课堂考试补博客
20155308<信息安全系统设计基础 嵌入式C语言课堂考试补博客 知识点 置位 ?bits = bits | (1 << 7) ; /* sets bit 7 */ bits |= ...
- 20145216 20145330 《信息安全系统设计基础》 实验五 简单嵌入式WEB 服务器实验
20145216 20145330 <信息安全系统设计基础> 实验五 简单嵌入式WEB 服务器实验 实验报告封面 实验步骤 1.阅读理解源码 进入/arm2410cl/exp/basic/ ...
- 20145208《信息安全系统设计基础》实验五 简单嵌入式WEB 服务器实验
20145208<信息安全系统设计基础>实验五 简单嵌入式WEB 服务器实验 20145208<信息安全系统设计基础>实验五 简单嵌入式WEB 服务器实验
- 20145210 20145226 《信息安全系统设计基础》实验五 简单嵌入式WEB服务器实验
20145210 20145226 <信息安全系统设计基础>实验五 简单嵌入式WEB服务器实验 结对伙伴:20145226 夏艺华 实验报告封面 实验目的与要求 · 掌握在ARM开发板实现 ...
- 20145221 《信息安全系统设计基础》实验五 简单嵌入式WEB服务器实验
20145221 <信息安全系统设计基础>实验五 简单嵌入式WEB服务器实验 实验报告 队友博客:20145326蔡馨熠 实验博客:<信息安全系统设计基础>实验五 简单嵌入式W ...
- 20145303 20145339 《信息安全系统设计基础》 实验五 简单嵌入式WEB服务器实验
20145303 20145339 <信息安全系统设计基础> 实验五 简单嵌入式WEB服务器实验 实验目的与要求 1.掌握在ARM开发板实现一个简单WEB服务器的过程 2.学习在ARM开发 ...
- 2017-2018-1 20155306 《信息安全系统设计基础》Mybash的实现
2017-2018-1 20155306 <信息安全系统设计基础>Mybash的实现 要求: 使用fork,exec,wait实现mybash 写出伪代码,产品代码和测试代码 发表知识理解 ...
- 2017-2018-1 20155326信息安全系统设计基础》嵌入式C语言课上考试补交
2017-2018-1 20155326信息安全系统设计基础>嵌入式C语言课上考试补交 PPT上的例子 已知位运算规则为: &0 --> 清零 &1 --> 不变 | ...
- 20145213《信息安全系统设计基础》实验一 Linux开发环境的配置
北京电子科技学院(BESTI) 实 验 报 告 课程:信息安全系统设计基础 班级:1452 姓名: 黄亚奇 祁玮 学号:20145213 20145222 成绩: 指导教师:娄嘉鹏 实验日期:2016 ...
随机推荐
- 0 Linux下Java使用ProcessBuilder执行命令与直接Bash执行命令之间的不同(环境变量方面)
0 问题发生 xiaojietest.java package tasks; import java.io.BufferedReader; import java.io.BufferedWriter; ...
- Prometheus Node_exporter 之 Basic CPU / Mem / Disk Gauge
1. CPU Busy :收集所有 cpu 内核 busy 状态占比 type: SinglestatUnit: perent(0-100)(所有 cpu使用情况 - 5分钟内 cpu 空闲的平均值) ...
- Fuckey V1.0 Beta版发布!!!
Fuckey,以前叫FullNexus4,只因为当时想做一个软件给自己的Nexus 4,方便方便一下,不过这名字感觉太局限了,毕竟很多朋友不是使用的Nexus 4的手机,但却还是使用了FullNexu ...
- umount nfs文件系统 显示 umount.nfs: device is busy
网上的方法一般都是 fuser -m /nfs 查出进程号,然后杀死进程号,或者fuser -km /nfs直接杀死,我试了下都不行 解决方法: 对于nfs文件系统来说,umount -l /nfs ...
- 清除右键菜单CMD入口
批处理代码 reg add "HKEY_CLASSES_ROOT\Directory\Background\shell\cmd" /v Extended /t REG_SZ
- symfony学习笔记1—简介
1.symfony快速入门还是先看代码结构把,这个是拿到代码的第一印象,app/:整个应用的配置,模版,translations,这个可能是多语言文件什么,src/:项目php文件,vendor/:第 ...
- Memcached与Redis对比,Redis基础笔记回顾
Memcached 1.为什么要把数据存入内存?快 2.Memcached和Redis的区别 (1)Memcached缓存.Redis数据库,Memcached不支持持久化到磁盘 (2)Redis提供 ...
- js 获取后缀参数
function getQueryString(name) { var reg = new RegExp("(^|&)" + name + "=([^&] ...
- 原生JS和jQuery分别使用jsonp来获取“当前天气信息”
需掌握的技能点: jsonp.跨域相关等. 以下两种代码,均可直接运行. 1.使用原生JS: <!DOCTYPE html> <html lang="en"> ...
- [USACO08NOV]lites
嘟嘟嘟 竟然还能发现这么水的题.就是线段树维护区间亦或嘛~~~~ #include<cstdio> #include<iostream> #include<algorit ...