zoukankan      html  css  js  c++  java
  • 2017-2018-1 20155320 嵌入式C语言——时钟

    2017-2018-1 20155320 嵌入式C语言——时钟

    要求:

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

    提交作业截图

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

    image

    课上提交的答案:

    image

    • 错误原因:没有正确理解PPT上的相关知识,只是照搬PPT上的内容

    • PPT上的范例是以分钟为例,通过移位和与运算得到所需的位,需要注意位数以及与的值的变化。

    提取分钟:

    设置分钟:

    • 关于通过位运算置位的总结如下:
    |0 取得原来值
    |1 全置为1
    &0 全置为0
    &1 取得原来值
    
    • 此题的正确答案为

    因为hours所占的位置为11—15,所以需要先右移11位,又因为hours占5位,所以需要与上0x1F

    提取小时:

    #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
    #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;
        return (time>>11) & 0x1F;
    }
    

    课下扩展

    • 关于对秒的提取与设置

    因为秒的位置在0—4位,所以不需要进行移位操作即可,直接与上0x1F

    提取秒:

    #define TIME_Addr  0xFFFFC0000
    #define TIME *(volatile int *) (TIME_Addr+2)//这里需要将地址+2
    
    int getSeconds()
    {
        int time = TIME;
        return time & 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 & 0x1F;
        TIME = newtime;
    }
    
    
    
  • 相关阅读:
    python,jsonpath提取json数据
    [.Net] Web API 本地化与全球化
    缺省源
    组合恒等式
    20210925衡阳八中多校联测
    codeforces赛后总结——1556D. Take a Guess
    codeforces赛后总结——1556C. Compressed Bracket Sequence
    阿里云(Ubuntu20.04)搭建wordpress全流程——附图超详细版
    Linux常用命令行操作
    阿里云服务器增加监听端口
  • 原文地址:https://www.cnblogs.com/ljq1997/p/8196722.html
Copyright © 2011-2022 走看看