2017-2018-1 20155326信息安全系统设计基础》嵌入式C语言课上考试补交
2018-01-04 22:50
423 查看
2017-2018-1 20155326信息安全系统设计基础》嵌入式C语言课上考试补交
PPT上的例子
已知位运算规则为:&0 --> 清零 &1 --> 不变 |1 --> 置1 |0 --> 不变
getMinutes部分
由于Seconds是0-5位,因此先右移5位将Minutes的最低位与位0对齐,再与上0000 0000 0011 1111,即0x3F,可将6-15位全部清0,获得minuts部分。
SetMinutes部分
代码如下:
#define Time_Addr 0xFFFFC0000 //实时钟芯片的IO映像基址是OxFFFFC0000 #define TIME *(volatile int *)(Time_Addr+2) //时间存放在基址+2的寄存器中 void SetMinutes(int minutes) //插入Minutes { int oldtime=TIME; int newtime; newtime=oldtime&~(0x3F<<5); newtime|=(minutes&0x3F)<<5; TIME=newtime; } int getMinutes() //取出Minutes { int time=TIME; return (time>>5)&0x3F; }
课上习题
由于seconds和minutes占0-10位,要提取hours,则先将hour右移11位,hour有5位,再与上000000000000011111,即0X1F。
sethours部分
void setHours(int hours){ int oldtime=TIME; newtime|=(oldtime&0X1F)<<11; TIME=newtime; }
getHours部分
int gethours() { int time; time=TIME; return (time>>11&0X1F); }
代码如下:
#define Time_Addr 0XFFFFC0000
#define TIME *(volatile int*) (Time+2)int gethours() { int time; time=TIME; return (time>>11&0X1F); }
void sethours(int hours){
int oldtime=TIME;
newtime|=(oldtime&0X1F)<<11;
TIME=newtime;
}
课下扩展
由于second在最右部分,所以不用左移,只需与上000000000000011111,即0X1F。代码如下:
#define TIME_Addr 0xFFFFC0000 #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; } int getSeconds() { int time = TIME; return (time & 0x1F)*2;//此处不考虑Seconds除2带来的误差,因此直接乘2 }
相关文章推荐
- 20155326 2017-2018-1 《信息安全系统设计基础》缓冲区溢出漏洞实验
- 2017-2018-1 20155326《信息安全系统设计基础》 实验五 通讯协议设计
- 2017-2018-1 20155216 《信息安全系统设计基础》 第十六周课上测试补交
- 20155326 2017-2018-1 《信息安全系统设计基础》课下加分项mypwd实现
- 20155308《信息安全系统设计基础 嵌入式C语言课堂考试补博客
- 2017-2018-1 20155326 《信息安全系统设计基础》 第一周对本书每章提一个问题
- 2017-2018-1 20155326 《信息安全系统设计基础》课程总结
- 2017-2018-1 20155331+20155336《信息安全系统设计基础》实验一报告
- 2017-2018-1 20155327 《信息安全系统设计基础》课堂测试&课下作业
- 2017-2018-1 20155219 《信息安全系统设计基础》实验三——实时系统
- 2017-2018-1 20155314《信息安全系统设计基础》实验三 并发程序
- 2017-2018-1 20155306 20155315 《信息安全系统设计基础》实验一 开发环境的熟悉
- 2017-2018-1 20155338 信息安全系统设计基础》实验五 通信协议设计
- 20155303 2017-2018-1 《信息安全系统设计基础》课程总结
- 2017-2018-1 20155338 《信息安全系统设计基础》 第二周课堂测试
- 2017-2018-1 20155234第一周《信息安全系统设计基础》学习总结
- 2017-2018-1 20155336 《信息安全系统设计基础》加分作业:实现mypwd
- 2017-2018-1 20155330 《信息安全系统设计基础》加分项目--实现mypwd
- 2017-2018-1 20155321 20155330 《信息安全系统设计基础》实验三——实时系统
- 2017-2018-1 20155315 《信息安全系统设计基础》实验五 通讯协议设计