• 20155302十六周课上实践


    课上未完成作业补交(嵌入式C语言)

    题目要求

    在作业本上完成附图作业,要认真看题目要求。

    提交作业截图

    作弊本学期成绩清零(有雷同的,不管是给别人传答案,还是找别人要答案都清零)

    知识储备

    嵌入式C语言中的位的提取与插入

    1.提取位

    以课上PPT中老师所讲Minutes为例:

    如图可见Seconds所占位是第0第4bit(共5bit),而Minutes所占位是第5第10bit(共6bit),Hours则是第11~第15bit(共5bit)。

    做法解析:
    
    由于Minutes在第五位开始,所以首先要把序列向右移动5位来使Minutes从第0位开始,再和0x3F
    (0000 0000 0011 1111)做&运算,0x3F的选择原因是Minutes一共六位且已经移位到了0~5位所以
    要&一个只有0~5位是1其他位都是0的序列,这样才能让从最低位开始的Minutes的结果全部保留下来,
    而其他位上全部清空置0。
    

    移位后结果:

    &运算后结果:

    而Hours与Seconds做法同理,都是要先将他们置于最低位然后&运算一个从最低位起1的个数与Hours和
    
    Seconds长度相等的其他位为0的序列,将它们从最低位提取出来。(Hours:右移5位,&
    
    (0000000000011111)Seconds:已处于最低位不需右移,直接&(0000000000011111))。
    

    2.插入位

    以课上PPT中老师所讲Minutes为例:

    做法解析:
    与提取位很相像,可以说是提取位的逆过程,首先将(0000 0000 0011 1111)向左移5位也就是移
    回与原本Minutes相对应的位置,然后将其取反与原Minutes做&运算(目的是只删除原Minutes并
    将其他位保留下来,就像一块模具,提取时用实物做了一个模具,现在用模具做回实物),这样原
    Minutes就被删除了,然后用删除后的结果&0x3F最后再左移5位移回原处就好了。
    

    删除:

    插入:

    头文件使用

    #define TIME_Addr  0xFFFFC0000//实时钟芯片的IO映像基址是OxFFFFC0000
    #define TIME *(volatile int *) (TIME_Addr+2)//时间存放在基址+2的寄存器中
    

    代码实现

    小时设置及提取

    #define TIME_Addr  0xFFFFC0000//实时钟芯片的IO映像基址是OxFFFFC0000
    #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 = newtime;
    }
    
    int getHours()
    {
        int time;
    	time = (time>>11) & 0x1F;
        return time;
    }
    

    秒的设置及提取

    #define TIME_Addr  0xFFFFC0000//实时钟芯片的IO映像基址是OxFFFFC0000
    #define TIME *(volatile int *) (TIME_Addr+2)//时间存放在基址+2的寄存器中
    
    void SetSeconds(int seconds) 
    {
        int oldtime=TIME;
        int newtime=oldtime&~0x1F;
        newtime|=seconds&0x1F;
        TIME=newtime;
    
    }
    int getSeconds() 
    {
        int time;
    	time=time&0x1F;
        return time ;
    }
  • 相关阅读:
    Canvas 3D球形文字云动画特效
    CSS3实现各种表情
    使用html+css+js实现弹球游戏
    CSS3实现图片木桶布局
    JQ实现弹幕效果
    css实现导航切换
    使用JS实现俄罗斯方块游戏
    JS实现文本中查找并替换字符
    Qt笔记之 01主函数和配置文件详解
    C++学习笔记之 异常
  • 原文地址:https://www.cnblogs.com/STILLlover521/p/8206669.html
Copyright © 2020-2023  润新知