zoukankan      html  css  js  c++  java
  • 嵌入式C语言——提取时分秒

    嵌入式C语言——提取时分秒

    题目:

    相关知识点

    提取位:

    插入位

    用宏定义定义地址

    #define TIME_Addr 0xFFFFC0000
    #define TIME *(volatile int *)(TIME_Addr+2)
    
    

    分析

    • 时分秒分别占5位、6位、5位!
    • 0x3F写成二进制111111六位进行&操作(适用于分)
    • 0x1F写成二进制11111五位进行&操作(适用于时、秒)

    提取小时

    #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 //实时钟芯片的IO映像基址是OxFFFFC0000
    #define TIME *(volatile int *)(Time_Addr+2) //时间存放在基址+2的寄存器中
    void SetHours(int hours) 
    {
        int oldtime=TIME;
        int newtime;
        newtime=oldtime&~(0x1F<<11);
        newtime|=(hours&0x1F)<<11;
        TIME=newtime;
    
    }
    

    提取分钟

    #define Time_Addr 0xFFFFC0000 //实时钟芯片的IO映像基址是OxFFFFC0000
    #define TIME *(volatile int *)(Time_Addr+2) //时间存放在基址+2的寄存器中
    int getMinutes() 
    {
        int time=TIME;
        return (time>>5)&0x3F;
    }
    
    

    插入分钟

    #define Time_Addr 0xFFFFC0000 //实时钟芯片的IO映像基址是OxFFFFC0000
    #define TIME *(volatile int *)(Time_Addr+2) //时间存放在基址+2的寄存器中
    void SetMinutes(int minutes) 
    {
        int oldtime=TIME;
        int newtime;
        newtime=oldtime&~(0x3F<<5);
        newtime|=(minutes&0x3F)<<5;
        TIME=newtime;
    
    }
    

    提取秒

    #define Time_Addr 0xFFFFC0000 //实时钟芯片的IO映像基址是OxFFFFC0000
    #define TIME *(volatile int *)(Time_Addr+2) //时间存放在基址+2的寄存器中
    int getSeconds() 
    {
        int time=TIME;
        return (time&0x1F)*2; //此处不考虑Seconds除2带来的误差,因此直接乘2
    }
    

    插入秒

    #define Time_Addr 0xFFFFC0000 //实时钟芯片的IO映像基址是OxFFFFC0000
    #define TIME *(volatile int *)(Time_Addr+2) //时间存放在基址+2的寄存器中
    void SetSeconds(int seconds) 
    {
        int oldtime=TIME;
        int newtime;
        newtime=oldtime&~0x1F;
        newtime|=(seconds/2)&0x1F;
        TIME=newtime;
    
    }
    
  • 相关阅读:
    [单选题]请求文件“time.inc”,当发生错误时就终止脚本,正确的方式是:
    [单选题]条件语句的时候不应该使用哪一种控制结构
    [高德地图]学习笔记--基本结构
    nodejs实战:小爬虫
    linux实用命令(2016/11/8-永远)
    自适应响应式布局-实现原理
    解决npm安装慢的方法
    git进阶(分支与标签管理)
    git进阶(远程仓库github)
    git入门命令(只涉及本地仓库管理)
  • 原文地址:https://www.cnblogs.com/hpl20155329/p/8195206.html
Copyright © 2011-2022 走看看