20155308《信息安全系统设计基础 嵌入式C语言课堂考试补博客
2018-01-04 20:48
357 查看
20155308《信息安全系统设计基础 嵌入式C语言课堂考试补博客
知识点
置位
?bits = bits | (1 << 7) ; /* sets bit 7 */
bits |= (1 << 7) ; /* sets bit 7 */
#define SET_BIT (n,bits) do{bits |= (1<<n)}while(0)
清除
bits &= ~(1 << 7) ; /* clears bit 7 */
#define CLR_BIT (n,bits) do{bits &=~ (1<<n)}while(0)
反转位
bits ^= (1 << 6) ; /* flips bit 6 */
#define FLIP_BIT (n,bits) do{bits ^= (1<<n)}while(0)
PPT上事例
提取位插入位
理解代码
由于Seconds占5位,因此需要先右移5位将Minutes的最低位与位0对齐,再与上3F(0000 0000 0011 1111)即可将6-15位全部清0,则获得minute部分。
0x3F出处为:对于minute一共有6bit,即(111111)2,转换为16进制即为0x3F;
地址的定义
#define DATA_Addr 0x0C00000 #define DATA *(volatile int *)(DATA_Addr) DATA = 0x1234;
最终代码
#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占5位,Minutes占6位,因此需要先右移11位将Hours的最低位与位0对齐,再与上1F(0000 0000 0001 1111)即可将5-15位全部清0从而取出Hours的全部5位。
最终代码
#define Time_Addr 0xFFFFC0000 //实时钟芯片的IO映像基址是OxFFFFC0000 #define TIME *(volatile int *)(Time_Addr+2) //时间存放在基址+2的寄存器中 void SetHours(int hours) //插入Hours { int oldtime=TIME; int newtime; newtime=oldtime&~(0x1F<<11); newtime|=(hours&0x1F)<<11; TIME=newtime; } int getHours() //取出Hours { int time=TIME; return (time>>11)&0x1F; }
练习题
void SetSeconds(int seconds)
int Getseconds()
#define Time_Addr 0xFFFFC0000 //实时钟芯片的IO映像基址是OxFFFFC0000 #define TIME *(volatile int *)(Time_Addr+2) //时间存放在基址+2的寄存器中 void SetHours(int hours) //插入Hours void SetSeconds(int seconds) //插入Seconds { int oldtime=TIME; int newtime; newtime=oldtime&~0x1F; newtime|=(seconds/2)&0x1F; TIME=newtime; } int getSeconds() //取出Seconds { int time=TIME; return (time&0x1F)*2; //此处不考虑Seconds除2带来的误差,因此直接乘2 }
相关文章推荐
- 2017-2018-1 20155326信息安全系统设计基础》嵌入式C语言课上考试补交
- 2017-2018-1 20155308 《信息安全系统设计基础》课堂第六章测试(补做)
- 20145221 《信息安全系统设计基础》实验五 简单嵌入式WEB服务器实验
- 20155308 《信息安全系统设计基础》课程总结
- 信息安全系统设计基础实验五:简单嵌入式 WEB 服务器实验 (20125221,20135235,20135239)
- 2017-2018 20155309南皓芯 信息安全系统基础设计第十三周博客
- 20155325 2017-2018 1 课上测试、课下作业、实验——码云&博客链接汇总 《信息安全系统设计基础》
- 信息安全系统设计基础实验五:简单嵌入式 WEB 服务器实验 (20135229,20135234)
- 20145221高其&20145326蔡馨熠《信息安全系统设计基础》实验五 简单嵌入式WEB服务器实验
- 2017-2018 20155309南皓芯 信息安全系统基础设计第五周博客
- 20155336 2017-2018 1 《信息安全系统设计基础》2017-10-25课堂实践
- 2017-2018 20155309南皓芯 信息安全系统基础设计第四周博客
- 学号20145332 《信息安全系统设计基础》实验五 简单嵌入式WEB服务器实验
- 20145303 20145339 《信息安全系统设计基础》 实验五 简单嵌入式WEB服务器实验
- 20145306 信息安全系统设计基础 第七周博客总结 (1)
- 20155305《信息安全系统设计基础》10月18日课堂 fork,exic,wait
- 2017-2018 20155309南皓芯 信息安全系统基础设计第十四周博客
- 20145306 信息安全系统设计基础 第四周博客总结
- 2017-2018-1 20155231 《信息安全系统设计基础》 第二周课堂测试
- 2017-2018 20155309南皓芯 信息安全系统基础设计第一周博客